手提钻hack -改进你的过程设计与手提钻扩展
如果您是RapidMiner的经验丰富的用户,那么您可能已经注意到RapidMiner是一个金锤。无论你在数据科学领域面临什么样的问题,你都很有可能用RapidMiner从你的头乐鱼平台进入脑中创建一个解决方案。严酷的项目现实往往表明,我们迫切需要一把金锤。金锤的唯一替代方案是使用数百种不同的工具,但是,比喻地说,它们会使您的工具带非常沉重,以至于您只能蹲着完成项目。
有时,您不仅需要一把金锤,而且需要很多把金锤:如今,许多标准项目涉及的大量数据还不足以证明真正的大数据技术的使用和开销是合理的,但仍然需要一种特殊的方法才能在内存中的商用硬件上执行。这正是我们的扩展适合的地方:它会把你的金锤RapidMiner变成一个易于使用的黄金手提钻,锤走了很多你的日常悲伤。
在下面的部分中,我们将概述扩展将帮助您的几个领域。我们将以一个详尽的操作符列表来结束本文。不时地,我们想回来,更新列表,因为我们正在不断改进扩展。
项目管理
在RapidMiner中,您可以在存储库中组织项目,您可以自由地构建您喜欢的结构。在多年的经验中,我们看到了许多糟糕的想法,我们在Old World Computing开发了一个标准化的存储库设计最佳实践。我们相信避免不必要的多样性有助于专注于真正的问题,并且将标准化的项目结构传递给同事也使他更容易理解什么是在哪里……
这种标准化布局的另一个优点是,您可以自动执行一些在生产项目中变得重要的任务:
- 自动存储结果,而不会混淆不同进程的结果或每次输入路径和宏
- 对所有流程进行持续集成测试,以确保跨RapidMiner版本或基础架构更新的兼容性
- 从中央开发服务器部署到星形登台基础设施,每个项目可能使用不同的服务器
然而,除了标准结构之外,您还需要工具支持来实现它。Jackhammer扩展带来了新的操作器,可以让您解决这些任务。我们发现,对于更大规模的项目,特别是如果涉及到一个完整的数据科学家团队,另一个重要的一点是确保流程的可重用性和控制。所以我们添加了特定的运算符来处理
- 具有比内置功能更好的控制的特殊情况。它支持延迟重新尝试,以应对部分基础设施可能暂时无法访问的情况
- 在这种情况下,您希望完全停止进程,但不会出错,或者只是跳过特定的循环迭代
- 以舒适的方式调试可重用的库进程
- 进程内未确定的执行顺序,而没有引入不必要的子进程级别
易用性
曾经将一组操作符复制到流程的开头吗?曾经发誓要改变整个过程和所有笔记,以获得一个漂亮的,可读的过程设计?
似乎很小,但一旦你习惯了它,你永远不会想要没有Shift操作符的生活:
插入或粘贴一组操作符,对其进行标记,选择Shift操作符或按下热键,剩余进程自动移动,为新的操作符腾出空间。这包括在过程中添加的所有注释!在插入其他操作符之后
在选择和选择移位操作符之后
当然,还包括多个操作符,使生活在许多情况下更容易。一个非常常见的模式是随机生成数据,然后丢弃所有生成的数据,只是为了获得一个空的示例集来启动循环,等等。我们的扩展现在提供了一个更容易阅读,一个操作符的解决方案。同样用于生成数字序列、组索引序列等。
其他操作符允许与核心RapidMiner中已经存在的相同操作,但现在可以同时使用多个属性,从而节省了循环的复杂性。
缓存
Jackhammer的缓存功能在许多情况下都很有用,在开发和部署期间也很有用。假设您有需要很长时间才能加载的外部资源,例如您的进程正在查询的大乐鱼体育安装型数据库。特别是在项目的建模阶段,您将需要在数据根本没有更改的情况下经常加载数据。使用新的操作符,您可以简单地在加载和转换数据的进程部分周围放置一个缓存操作符。缓存操作符将子进程的结果存储在内存中,如果太大则存储在本地磁盘上。如果重新执行该流程,则缓存操作符将检查缓存是否仍然有效,或者生成流程是否已更改。如果它仍然有效且不太旧,则立即返回缓存版本并继续此过程。
缓存具有慢速数据库查询的子进程,通过外部数据过滤和预处理。运行时间从3分42秒减少到14秒
虽然这允许您通过消除不必要的等待时间来专注于建模,但它在部署场景中变得更有价值。假设您正在为监视某些机器的进程从不同的数据库执行两个查询。一个数据库包含从机器发送的新信号,而另一个数据库包含这台特定机器的元信息,这些信息随着时间的推移相对稳定。通过将第二个查询放入缓存中,可以避免由第二个查询引起的额外运行时。缓存可以参数化,以便对过程变量/宏敏感,这样它就会为不同的机器存储不同的结果。如果进程时间对您来说不重要,那么它很可能对您的数据库管理员很重要。
特别是在每分钟可以调用数千次的web服务部署中,您确实希望消除任何延迟执行的因素。这不仅包括数据库访问,还包括对存储库的任何访问(因此也包括对底层数据库的访问)。如果您有一个使用大型模型(如k-NN或SVM)的评分过程,那么将其放置在缓存操作符中可以节省大量时间和数据库负载。由于受时间限制,模型的任何更新都将在有限的时间后反映出来,或者您可以在训练新模型时使用一个缓存控制操作符来清空缓存。
如果您正在使用RapidMiner服务器创建web应用程序,那么缓存对于提高响应速度也变得非常宝贵。对于该特定用例,可以从不同的进程访问一个进程中填充的缓存,同时确保遵守用户权限。
更灵活的循环
Jackhammer扩展包含一组额外的操作符,用于灵活的循环。与RapidMiner核心相比,它们不受旧版本兼容性要求的影响。因此,它们不仅共享相同的设计原则,因此都具有相同的端口集,而且还包含所有必要的端口,以避免任何复杂的设置。此外,可以从内部控制它们,以便提前终止循环或跳过单个迭代。它们也都支持并行处理,加快了计算速度,特别是对于较大的数据集。它们还允许在内存中通过块处理来处理更多的数据。
每个循环操作符在外部都有输入端口。在那里交付的内容将被转发到子流程的内部输入端口,并在每次迭代时作为副本保留在那里。如果一个循环持续地作用于一个对象,并且在每次迭代时都改变它,那么这个对象可以被转发到一个循环输出端口。在下一次迭代中,它们的结果将被转发到循环输入端口。由于这通常需要初始化,例如传递一个空的示例集,因此循环输入端口在第一次迭代中使用输入端口的对象初始化。为内部输出端口收集结果,并为内部循环结果转发结果。两者都可以在外面使用。其中一个循环操作符的内部和外部端口
此外,环路可以有一个可选的端口用于其特定目的。例如,循环文件(高级)操作符可以接收一个包含文件名的ExampleSet。它将遍历它们,而不是搜索参数指定的目录。
可以使用以下循环操作符。所有高级版本都复制了核心功能,并添加了上述功能:
- 循环(高级):与核心循环相同
- 循环存储库(高级):与核心循环存储库相同,但允许从存储库访问进程(因此允许元编程)
- 循环文件(高级):与核心循环文件相同
- 循环批量:将给定的数据集处理为可指定大小的批量。允许并行整个数据预处理部分或缩小并行处理数据的大小,以适应主存储器
- 循环组:处理属于同一组的数据子集。组由多个属性的相同值标识。组标识符可以自动提取为过程变量/宏。
- 循环索引:处理索引对象集合的每个条目(见下文)。当前索引值作为过程变量/宏提供。
- 循环远程文件:与循环文件(高级)相同,但循环远程文件连接,如ftp/sftp/ftps
- Read CSV (Batchwise):迭代地从CSV文件中读入一批行,处理它们并继续下一个数据。这允许处理任意大的csv文件,例如导入到数据库中。如果预处理需要很长时间,可以多线程加速。
索引集合
RapidMiner中的集合在您多次重复特定任务的情况下非常有用。在监控场景中,我们可能在数十家工厂中拥有数百台机器,在与客户流失相关的应用程序中,我们可能拥有数千个客户……
循环遍历我们正在分析的特定实体是一个标准程序。通常,您要么将每个实体的结果存储在RapidMiner的存储库中,要么在输出数据时附加结果集合。在包含数千个实体的大型设置中,这两种方法都有缺点:如果在存储库中存储太多条目,那么存储库将变得很慢,并且由于每个条目的巨大开销,管理和部署都将成为地狱。如果您将数据组合在一个大表中,并且您只想访问特定实体的数据,则需要加载所有数据并过滤所有数据,这是非常低效的,除非您通过外部基础设施(如数据库)。不幸的是,后一种方法只适用于数据,而不适用于像预测模型这样的复杂对象。
我们的索引集合解决了这两个任务:就像在标准集合中一样,您可以简单地用它们收集所有对象,但不是将它们线性链接,而是需要为每个添加的对象分配更多的键。这些值可用于以后再次检索对象。因此,如果您的实体具有工厂位置、机器id或客户编号等标识符,则只需获取这些值的条目。这样你只需要存储一个对象,效率更高。如果使用缓存操作符消除了加载,则访问是即时的,因此您不需要再次进行过滤。不同商店中不同商品的索引模型。每个模型都是预处理和线性回归模型的结合
该扩展还包含一个特殊操作符,用于循环遍历这些集合,并将键作为进程变量/宏提供。这可以很好地用于报告每个单独实体的模型性能等。除了循环之外,还有单个操作符来访问单个对象的索引,这在web服务或web应用程序部署中很有帮助。
总结
Jackhammer扩展包含一个庞大的操作符集,用于处理数据科学家日常生活的不同部分。
你可以简单地下载它的RapidMiner Studio的市场集成或手动通过以下链接:https://marketplace.www.turtlecreekpls.com/UpdateServer/faces/product_details.xhtml?productId=rmx_toolkit
一些运营商实际上是完全免费的。其中一些在演示模式下功能有限。请参阅我们的定价详情请联系我们购买。如果您有任何问题,请随时与我们联系。
最后但并非最不重要的是,这里有一个包含操作符的广泛列表:
过程控制
- 从示例中提取宏
- 在后台执行进程
- 执行过程
- 停止进程(仁慈地)
- 处理异常(高级)
- 确定订单
缓存
- 缓存
- 检索缓存
- 清除缓存
集合
- 组合索引对象
- 扩展索引对象
- 按键选择
循环
- 循环(高级)
- 循环批次(高级)
- 环路组(高级)
- 循环索引
- 循环远程文件
- 循环文件(高级)
- 循环存储库(高级)
循环控制- 跳过迭代
验证
- 交叉验证(高级)
测试
- 主张平等
数据访问
- 读Matlab
- 存储结果
- 打开远程文件
- 写远程文件
- 删除远程文件
- 移动远程文件
循环- 读取CSV(批量)
一代
- 生成序列
- 生成序列数据
- 生成群序列
- 生成组索引
- 生成空数据
建模
- 索引模型
- 组合索引模型
- 扩展索引模型
转换
- 标称至今(高级)
- 按规格数据离散化
- (高级)
- 联盟(高级)
- Set Minus(高级)
- 区别
- 相交(高级)
系列
- 重新取样系列
- 重采样多系列
图
- 从存储库中提取树
- 树到数据(关系)
- 数据到树(关系)
- 数据到树(宽)
- 树到数据(宽)
- 选择的后代
- 选择的祖先
评论
伟大的文章@land以及为RM Studio用户提供的强大功能。
@land我在缓存!