【问题标题】:Export spark feature transformation pipeline to a file将火花特征转换管道导出到文件
【发布时间】:2019-04-22 03:07:13
【问题描述】:

PMML、Mleap、PFA 目前仅支持基于行的转换。它们都不支持基于框架的转换,例如聚合或 groupby 或 join。导出包含这些操作的 Spark 管道的推荐方法是什么。

【问题讨论】:

    标签: apache-spark apache-spark-sql pmml mleap


    【解决方案1】:

    我看到 Mleap 有 2 个选项:

    1) 实现基于数据帧的转换器和SQLTransformer-Mleap 等效项。该解决方案在概念上似乎是最好的(因为您始终可以将此类转换封装在管道元素中),但也需要大量工作。见https://github.com/combust/mleap/issues/126

    2) 使用相应的操作扩展DefaultMleapFrame,您想要执行然后实际将所需的操作应用于在修改的MleapServing 子项目中传递给restserver 的数据。

    我实际上选择了 2) 并添加了 implodeexplodejoin 作为 DefaultMleapFrame 的方法以及一个允许快速连接的 HashIndexedMleapFrame。我没有实现groupbyagg,但是在Scala 中这相对容易实现。

    【讨论】:

      【解决方案2】:

      PMML 和 PFA 是表示机器学习模型的标准,而不是数据处理管道。机器学习模型接收数据记录,对其执行一些计算,然后发出输出数据记录。因此,根据定义,您使用的是单个孤立的数据记录,而不是数据记录的集合/框架/矩阵。

      如果您需要表示完整的数据处理管道(其中 ML 模型只是工作流程的一部分),那么您需要寻找其他/组合标准。或许 SQL 与 PMML 配对将是一个不错的选择。这个想法是您希望在 ML 模型之外而不是在其内部执行数据聚合(例如,SQL 数据库将比任何 PMML 或 PFA 做得更好运行时)。

      【讨论】:

      • PFA 和 MLeap 不仅限于机器学习模型。根据 DMG,PFA 是统计模型和数据转换引擎的新兴标准。同样在 mleap 开发中,有关于将现有的基于行的转换转换为基于帧的讨论。参考here
      • 在这种情况下,“数据转换”是指特征工程,而不是重新实现 SQL 标准。例如,PMML 带有内置的聚合函数 (dmg.org/pmml/v4-3/Transformations.html#xsdElement_Aggregate),但它们的范围仅限于该一条数据记录(而不是数据库)。
      • 详细说明:“数据转换”!=“数据查询”。
      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      相关资源
      最近更新 更多