【问题标题】:How to get record count/class distribution for every tree node in Spark MLlib Random Forest?如何获取 Spark MLlib 随机森林中每个树节点的记录计数/类分布?
【发布时间】:2016-06-26 05:56:06
【问题描述】:

我正在使用 Spark 1.5.0 MLlib 中的随机森林进行两类分类。我想获取每个树节点中每个类的记录数。有没有办法做到这一点?非常感谢您的帮助!

【问题讨论】:

    标签: apache-spark tree nodes random-forest apache-spark-mllib


    【解决方案1】:

    不,或者至少不通过公开的 API。您可以使用trees() 获取随机树模型中的所有树。在每棵树中,您可以获得从topNode() 开始的所有节点,在每个节点中您可以获得InformationGainStats,它会告诉您您的information gain 和杂质,但不会存储拆分后的元素数量。不确定在一般情况下是否有必要,毕竟通常你并不关心新子集有多大,而是你的类有多么混乱。

    如果您需要概率,也许 Predict 类就足够了?

    【讨论】:

    • 感谢 Mateusz 的及时回答和非常有用的信息!我需要的是根据节点的误报率 (FPR) 从树节点创建规则。如果一个节点的 FPR Predict 课程将如何帮助您做到这一点?
    • 如果您想可视化决策树的结构,了解每个节点的分布会很有用。
    【解决方案2】:

    首先,以 PMML 数据格式导出您的随机森林模型。然后,使用JPMML-Evaluator library 再次对您的数据集进行评分,并捕获每个预测的分数和节点 ID。最后,对结果进行分组。

    此方法适用于任何 ML 软件/树模型类型组合。例如,您可以以完全相同的方式分析 R 和 Scikit-Learn RF、GBM、XGBoost 等模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-28
      • 2018-10-31
      • 2016-10-08
      • 2017-09-03
      • 1970-01-01
      • 2020-08-16
      • 2017-12-24
      • 1970-01-01
      相关资源
      最近更新 更多