PySpark RandomForest实现中如何计算rawPrediction?

问题描述 投票:0回答:1

我已经在10个示例的训练集上训练了一个RF模型(有3棵树,深度为4个)。以下是三棵树的外观图像。我有两个班级(例如0和1)。

The three decision trees

阈值在左分支上提到,而圆圈中的数字(例如7、3是特征2的阈值和阈值,即f2)的示例数。

现在,当我尝试将模型应用于10个示例的测试集时,我不确定如何计算原始预测。

+-----+----+----+----------+-------------------------------------------------------------------
|prediction|features                                                                                                                                                                                                                                                                                                   |rawPrediction|probability                            |
+-----+----+----+----------+-----------------------------------------------------------------------------------------------------------+-------------+---------------------------------------+
|1.0       |[0.07707524933080619,0.03383458646616541,0.017208413001912046,9.0,2.5768015000258258,0.0,-1.0,-1.0,0.0,-1.0,-1.0,-1.0,-1.0,-1.0,0.0014143059186559938,0.0,0.6666666666666667,7.076533785087878E-4,0.0014163090128755495,0.9354143466934853,0.9333333333333333,0.875,0.938888892531395,7.0]                 |[1.0,2.0]    |[0.3333333333333333,0.6666666666666666]|

我已经通过下面的链接进行了了解,但是我无法理解。

https://forums.databricks.com/questions/14355/how-does-randomforestclassifier-compute-the-rawpre.html

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/ml/classification/RandomForestClassifier.scala

我可以肯定,它并不像您想象的那么简单。例如,根据我的理解,这并不像-例如,如果两棵树预测0,而一棵树预测为1,则原始预测将为[2,1]。并非如此,因为当我在500个示例上训练模型时,我看到同一示例的原始预测为[0.9552544653780279,2.0447455346219723]。

有人可以向我解释这是如何数学计算的吗?任何帮助在这里都将不胜感激,因为它有点基本,我想直截了当地了解它的工作方式。再次感谢您,如果需要其他信息来解决此问题,请发表。

我已经在10个示例的训练集上训练了一个RF模型(有3棵树,深度为4个)。以下是三棵树的外观图像。我有两个班级(比如0和1)。阈值是...

apache-spark pyspark classification random-forest apache-spark-mllib
1个回答
0
投票

[原始预测是对每棵树的预测类别概率,对森林中所有树的总和。对于单个树的类概率,属于所选叶节点中每个类的样本数很重要。

© www.soinside.com 2019 - 2024. All rights reserved.