资讯

包外估计是什么?用没被抽中的样本免费评估模型

2026-11-053 分钟阅读百科
TL;DR包外估计(Out-of-Bag Estimate)是 Bagging 和随机森林中利用自助采样时未被抽到的约 36.8% 样本来评估模型泛化误差的方法,每个样本只用没见过它的那些基学习器来预测,无需单独划分验证集即可得到接近交叉验证的估计,还可用于计算置换特征重要性。

包外估计(Out-of-Bag Estimate,OOB Estimate)是 Bagging 和随机森林等集成学习方法所特有的一种评估模型效果的方法。它利用每个基学习器在训练时没有用到的那部分样本来估计模型的泛化误差,不需要另外留出验证集,相当于“免费”地得到了一次评估。

从自助采样说起

Bagging 方法在训练每一个基学习器时,都会对原始的训练集进行自助采样:从包含 m 个样本的训练集中,有放回地随机抽取 m 次,得到一个同样大小的新训练集。由于是有放回的抽取,有些样本会被抽到多次,而另一些样本一次也不会被抽到。可以计算出:某一个样本在 m 次抽取中始终没有被抽到的概率是“一减去 m 分之一”的 m 次方,当 m 很大时,这个值趋近于 e 的负一次方,大约是 36.8%。也就是说,每一个基学习器在训练时,大约只用到了原始训练集中 63.2% 的不同样本,剩下大约 36.8% 的样本它从来没有见过。这些没有被抽到的样本,就叫作这个基学习器的“包外样本”,因为它们在这个基学习器的“袋子”之外。

包外估计怎么做

对于原始训练集中的每一个样本,找出所有在训练时没有用到它的那些基学习器,也就是这个样本是它们的包外样本,只用这些基学习器来对它进行预测,再把它们的预测结果组合起来,比如投票或平均,得到这个样本的包外预测。由于这些基学习器从来没有见过这个样本,这个预测就相当于是对一个“新”样本的预测。对所有的训练样本都这样做,然后把包外预测与真实的标签进行比较,计算出的错误率就是包外误差,它可以作为整个集成模型泛化误差的估计。当基学习器的数量足够多时,几乎每个样本都会成为一部分基学习器的包外样本。

包外估计的优点

不需要单独划分验证集:在数据量有限时,从训练数据中留出一部分作为验证集,会减少可用于训练的数据。而包外估计让所有的数据都参与了训练,同时又能得到对泛化能力的评估。计算成本低:它只是在训练过程中顺便完成的,不需要像交叉验证那样把模型重新训练很多次。估计的效果好:Leo Breiman 在提出随机森林的论文中指出,包外估计的结果与使用同样大小的独立测试集得到的估计相当准确。研究表明,它的效果通常接近交叉验证。

其他的用途

评估特征的重要性:随机森林中常用的置换特征重要性,就可以借助包外样本来计算:对某一个特征,把包外样本中这个特征的值随机地打乱,再看包外误差增加了多少。误差增加得越多,说明这个特征对预测越重要。辅助调参:可以用包外误差来选择随机森林中树的数量、每次分裂时考虑的特征数量等超参数,也可以观察包外误差随着树的数量增加而变化的曲线,判断是否已经有了足够多的树。辅助决策树的剪枝等。在 scikit-learn 等工具库中,训练随机森林时只需要打开一个参数,就能直接得到包外得分。需要注意的是,包外估计只适用于基于自助采样的方法,对于提升法等不使用自助采样的集成方法并不适用;另外,在数据存在时间顺序或分组结构时,比如同一个用户的多条记录,包外样本与训练样本之间可能存在关联,包外估计可能会过于乐观。