如何获取 Spark MLlib 随机森林中每个树节点的记录 count/class 分布?

How to get record count/class distribution for every tree node in Spark MLlib Random Forest?

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

不,或者至少不是通过公开的 API。您可以使用 trees(). In each tree you can get all nodes starting from the topNode() and in each Node you can get InformationGainStats which will tell you about your information gain 和杂质获取随机树模型中的所有树,但不存储拆分后的元素数。不确定在一般情况下是否有必要,毕竟通常您不在乎新子集有多大,而是在 classes.

方面它有多混乱

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

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

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