【发布时间】:2016-06-26 05:56:06
【问题描述】:
我正在使用 Spark 1.5.0 MLlib 中的随机森林进行两类分类。我想获取每个树节点中每个类的记录数。有没有办法做到这一点?非常感谢您的帮助!
【问题讨论】:
标签: apache-spark tree nodes random-forest apache-spark-mllib
我正在使用 Spark 1.5.0 MLlib 中的随机森林进行两类分类。我想获取每个树节点中每个类的记录数。有没有办法做到这一点?非常感谢您的帮助!
【问题讨论】:
标签: apache-spark tree nodes random-forest apache-spark-mllib
不,或者至少不通过公开的 API。您可以使用trees() 获取随机树模型中的所有树。在每棵树中,您可以获得从topNode() 开始的所有节点,在每个节点中您可以获得InformationGainStats,它会告诉您您的information gain 和杂质,但不会存储拆分后的元素数量。不确定在一般情况下是否有必要,毕竟通常你并不关心新子集有多大,而是你的类有多么混乱。
如果您需要概率,也许 Predict 类就足够了?
【讨论】:
首先,以 PMML 数据格式导出您的随机森林模型。然后,使用JPMML-Evaluator library 再次对您的数据集进行评分,并捕获每个预测的分数和节点 ID。最后,对结果进行分组。
此方法适用于任何 ML 软件/树模型类型组合。例如,您可以以完全相同的方式分析 R 和 Scikit-Learn RF、GBM、XGBoost 等模型。
【讨论】: