【问题标题】:Spark Process Dataframe with Random Forest带有随机森林的 Spark 流程数据框
【发布时间】:2016-04-30 23:52:12
【问题描述】:

使用Spark 1.5.1, MLLib Random Forest Probability 的答案,我能够使用ml.classification.RandomForestClassifier 训练一个随机森林,并使用经过训练的随机森林处理一个保留数据帧。

我遇到的问题是,我想保存这个经过训练的随机森林,以便将来处理任何数据帧(与训练集具有相同的特征)。

classification example on this page 使用mllib.tree.model.RandomForestModel,它展示了如何保存经过训练的森林,但据我所知,只能在LabeledPoint RDD 上进行训练(并在未来进行处理)。我对LabeledPoint RDD 的问题是它只能包含标签双精度和特征向量,所以我会丢失所有用于其他目的的非标签/非特征列。

所以我想我需要一种方法来保存ml.classification.RandomForestClassifier 的结果,或者构造一个LabeledPoint RDD,它可以保留除通过mllib.tree.model.RandomForestModel 训练的森林所需的标签和特征之外的列。

任何人都知道为什么 ML 和 MLlib 库同时存在而不只是其中一个存在吗?

非常感谢您阅读我的问题,并提前感谢您提供任何解决方案/建议。

【问题讨论】:

    标签: apache-spark apache-spark-sql apache-spark-mllib random-forest apache-spark-ml


    【解决方案1】:

    我将重复使用 spark 编程指南中所说的内容:

    spark.ml 包旨在提供一套基于 DataFrame 构建的统一高级 API,帮助用户创建和调整实用的机器学习管道。

    在 Spark 中,核心功能是它的 RDD。如果您有兴趣,有一篇关于该主题的优秀论文,我可以稍后添加链接。

    MLLib 出现了,它最初是一个独立的库,后来被 Spark 项目所吸引。尽管如此,Spark 中的所有机器学习算法都是在 RDD 上编写的。

    然后将 DataFrame 抽象添加到项目中,因此需要一种更实用的方法来构建机器学习应用程序,包括转换器和评估器以及最重要的管道。

    就此而言,数据工程师或科学家不需要研究底层技术。因此抽象。

    您可以同时使用这两种方法,但您需要记住,您在 ML 中使用的所有算法都是在 MLlib 中创建的,然后进行抽象以便于使用。

    【讨论】:

    • 感谢 Eliasah,它阐明了 ml 和 mllib 之间的区别。我的主要问题是能够保存经过训练的随机森林,并预测数据帧的值而不是标记点 rdd。对此有什么想法吗?
    • 预测有什么问题?您是否阅读了我在问题中发布的链接上的答案?恐怕你在这里不是很清楚。你想在上面使用 ML 保存和预测吗?
    • ML 允许您在数据帧上进行预测,但不允许您保存。 MLLIB 允许您保存,但不允许您在数据帧上进行预测(仅在标记点 RDD 上)。我想保存随机森林(如 MLLIB 允许,而 ML 不允许)并使用保存的森林来预测数据帧(如 MLLIB 不允许,而 ML 允许)
    • 最后还是一样的算法。但不幸的是,保存方法目前在 ML 中不可用。我相信这是一个 JIRA 问题,所以现在的解决方案是使用标记点和 mllib 创建您的模型。不幸的是,即使 PMML 导出也不适用于 ML 上的 RF。
    猜你喜欢
    • 2017-06-13
    • 2016-01-28
    • 2013-04-25
    • 2016-03-25
    • 1970-01-01
    • 2018-06-24
    • 2014-05-01
    • 2012-04-19
    • 2020-11-30
    相关资源
    最近更新 更多