让 AI 数随机森林的袋外样本:抽了五次,为何还有记录一次没见过

前天 3阅读

随机森林的一棵树可以抽取与原数据同样多的训练记录,但“抽了五次”并不等于“五条都见过”。有放回抽样允许重复,留下的袋外记录正是理解OOB评估的入口。让AI把每次抽取和最终不同ID分开列,问题会清楚许多。

让 AI 数随机森林的袋外样本:抽了五次,为何还有记录一次没见过

AI模型生成的概念插图:抽样记录进入一棵树,未入样记录留在另一侧;数量不对应正文枚举,不是训练过程截图。

五条记录,抽五次

原数据只有A、B、C、D、E五条。每次独立等概率抽一条,抽完放回,共抽五次。一种可能结果为[A,A,C,E,E]。训练袋长度为5,不同记录只有A、C、E三条;B与D一次也没出现,是这棵树的袋外样本。

A出现两次、E出现两次,不是简单去重之后和C各算一份。实现可以通过重复行或相应抽样计数体现这种训练权重;但判定谁属于袋外时,只关心该ID出现次数是否为零。不要把“有重复”误解成抽样失败。

约三成七是极限,不是每袋固定比例

以B为例,一次没有抽到它的概率为4/5,五次都没有抽到的概率为(4/5)⁵=0.32768。因此B成为袋外样本的概率是32.768%。其他四条对称,袋外数量的期望为5×0.32768=1.6384,不同入袋记录数量的期望为5-1.6384=3.3616。

期望1.6384不要求某次袋里出现“小数条记录”。上面的具体抽样有2条袋外;另一袋可能五次全抽A,便留下4条;若每条各抽一次,袋外数量为0。平均值描述很多种可能结果,不是对每袋的硬配额。

一般有n条、等概率有放回抽n次时,某条未出现的概率是(1-1/n)的n次方。随着n增大,它趋近exp(-1),约36.7879%,但n=5时要用32.768%。本文还枚举了全部5⁵=3125种等可能有序抽样,算得平均袋外数量同样为1.6384。

评价某条记录,只用没见过它的树

对记录B做袋外预测时,应只汇总训练袋未包含B的那些树。某棵树没见过D却见过B,它可以参与D的袋外预测,却不能参与B的。OOB并不是抽样后找出一份对所有树都通用的固定验证集。

让AI为每棵树列抽样ID及出现次数,再给每条原记录列“有资格参与OOB预测的树编号”。人工可随便挑一条,检查这些树的袋中确实没有它。树很少时,一些记录可能还没有任何合格树,不能把空预测当成正常投票结果。

本文假定等概率、每棵树抽n次;如果设置抽样次数m,未出现概率应变为(1-1/n)的m次方。使用不等样本权重时又要核对实际采样规则。随机森林还会随机选择分裂候选特征,那是另一层随机性,不应加入这次记录计数。

袋外评估利用了未入该树训练袋的记录,但不会自动消除同一实体的多条记录、时间依赖或预处理泄漏。它是否对应真正想预测的新情况,仍需任务设计判断。这份枚举只核对抽样与评估资格,没有给出任何分类准确率。

资料核对日期:2026年10月2日。算例为原创教学设定,已用独立Python计算复核,不代表真实模型训练或性能测试。

参考资料

scikit-learn:随机森林与袋外评估

scikit-learn:RandomForestClassifier的bootstrap与max_samples

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。