scikit-learn 中的参数 oob_score_ 等于准确度还是错误?

Parameter oob_score_ in scikit-learn equals accuracy or error?

我从 Python scikit-learn 包中实现了随机森林分类器 (RF) 来解决 ML 问题。在第一阶段,我使用交叉验证来抽查其他算法,现在我选择了 RF。

后来我也查看了RF的OOB估计告诉我的是什么。但是,当我将 'oob_score_' 中的 return 与我的 CV 结果进行比较时,我发现存在很大差异。

scikit-learn 文档告诉我:

oob_score : bool

Whether to use out-of-bag samples to estimate the generalization error.

因为文档,我假设参数 'oob_score_' 是误差估计。但是寻找原因,我也想到它实际上可能会估计准确性这将 - 至少有点 - 更接近我的 CV 结果。我还检查了代码,更多人相信它的准确性,但想确定......(在这种情况下,我发现该文档误导了 BTW)。

oob_score_ scikit-learn 的准确性或误差估计是?

它类似于 .score 方法,模型的 returns accuracy。它只是概括为 oob 场景。文档确实有点误导。

您可能会在代码中找到 https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/ensemble/forest.py

for k in range(self.n_outputs_):
            if (predictions[k].sum(axis=1) == 0).any():
                warn("Some inputs do not have OOB scores. "
                     "This probably means too few trees were used "
                     "to compute any reliable oob estimates.")

            decision = (predictions[k] /
                        predictions[k].sum(axis=1)[:, np.newaxis])
            oob_decision_function.append(decision)
            oob_score += np.mean(y[:, k] ==
                                 np.argmax(predictions[k], axis=1), axis=0)

它只是计算正确分类的平均值。