解释 RandomForestRegressor 的袋外误差估计

机器算法验证 回归 随机森林
2022-03-23 21:14:35

我在我的数据上使用了 RandomForest 回归器,我可以看到 oob 得分为 0.83。我不确定它是怎么变成这样的。我的意思是我的目标是 10^7 范围内的高值。因此,如果它是 MSE,那么它应该更高。我不明白 0.83 在这里意味着什么。

我正在使用 sklearn 工具包的 python RandomForestRegressor。

我愿意

模型 = RandomForestRegressor(max_depth=7, n_estimators=100, oob_score=True, n_jobs=-1) model.fit(trainX, trainY)

然后我看到 model.oob_score_ 我得到像 0.83809026152005295 这样的值

1个回答

为了将基本事实(即正确/实际)目标值与随机森林的估计(即预测)目标值进行比较,scikit-learn 不使用 MSE,而是使用(不像MATLAB或(Breiman 1996b) ),如您在forest.py的代码中所见:R2

self.oob_score_ = 0.0
for k in xrange(self.n_outputs_):
    self.oob_score_ += r2_score(y[:, k], predictions[:, k])
self.oob_score_ /= self.n_outputs_

r2_score()计算决定系数aka。R2,其最佳分数为 1.0,较低的值更差。

供参考: