Out of Bag Error使得在随机森林中不需要CV吗?


15

我对随机森林很陌生。过去,我一直将拟合与测试的准确性与拟合与训练的准确性进行比较,以检测是否存在过度拟合。但是我在这里读到:

“在随机森林中,不需要交叉验证或单独的测试集即可获得测试集误差的无偏估计。它是在运行期间内部估计的……”

上面的一小段可以在“ 袋外(oob)误差估计”部分找到。这个“袋外错误”概念对我来说是一个全新的概念,令人困惑的是我模型中的OOB错误是35%(或65%的准确度),但是,如果我对我的数据应用交叉验证(只是一个简单的保留)方法),然后将拟合与测试拟合与训练进行比较,我分别获得65%的准确性和96%的准确性。根据我的经验,这被认为是过拟合,但OOB会保持35%的误差,就像我的拟合与测试误差一样。我过拟合吗?我是否应该甚至使用交叉验证来检查随机森林中的过度拟合?

简而言之,当我的拟合vs训练表明我过度拟合时,我不确定是否应该信任OOB来获得测试集错误的无偏错误!


OOB可用于确定超参数。除此之外,对我来说,为了估计模型的性能,应该使用交叉验证。
Metariat

@Matemattica当您谈论超参数时,您究竟在说什么?抱歉,我对该主题缺乏知识
jgozal 2016年

每次
迭代时

我知道这是一个完全不同的问题,但是如何从错误中确定每次迭代的树数和特征样本?
jgozal

1
可能这可能会有所帮助:stats.stackexchange.com/a/112052/78313总的来说,我从来没有见过RF方面的这种差异!
Metariat

Answers:


21
  • 训练错误(如中所示predict(model, data=train))通常是没有用的。除非你做的(非标)树木修剪,它无法通过算法的设计是大大高于0。随机森林使用决策树的引导聚合,众所周知,决策树过度适合。这就像是一个最近邻分类器的训练错误。

  • 1e

    因此,袋外误差与交叉验证误差并不完全相同(更少的树用于聚合,更多的训练用例副本),但出于实际目的,它足够接近。

  • 为了检测过度拟合,需要进行的有意义的工作是将袋装误差与外部验证进行比较。但是,除非您了解数据中的聚类,否则“简单的”交叉验证错误将容易产生与“袋外错误”相同的乐观偏差:根据非常相似的原理进行拆分。
    您需要将袋装或交叉验证与错误进行比较,以便精心设计的测试实验可以检测到这一点。


11

袋外错误很有用,可以替代其他性能评估协议(例如交叉验证),但应谨慎使用。

与交叉验证一样,使用袋外样本的性能估计是使用未用于学习的数据计算的。如果数据已通过跨样本传输信息的方式进行了处理,则估计(可能)将有偏差。我想到的简单示例是执行特征选择或缺失值插补。在两种情况下(特别是对于特征选择),都使用来自整个数据集的信息对数据进行转换,从而使估计值产生偏差。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.