本文总结了我在学习随机森林时关于oob产生的一系列问题以及学习到的问题答案
在学习随机森林算法参数解释以及参数择优的过程中,注意到oob_score这一参数对应是否采用袋外样本来评估模型的好坏。
同时在学习随机森林的优点时,其中一条是训练后可以给出各个特征对于输出的重要性。
一开始未能清楚理解该优点的理论原因是什么,但在今天学习oob_score的时候,我就想这个优点是不是就是基于oob实现的(不是!具体看后文!)。
1. 什么是oob
首先简单说一下什么是袋外样本oob (Out of bag):在随机森林中,m个训练样本会通过bootstrap (有放回的随机抽样) 的抽样方式进行T次抽样每次抽样产生样本数为m的采样集,进入到并行的T个决策树中。这样有放回的抽样方式会导致有部分训练集中的样本(约36.8%)未进入决策树的采样集中,而这部分未被采集的的样本就是袋外数据oob。
而这个袋外数据就可以用来检测模型的泛化能力,和交叉验证类似。可以理解成从train datasets 中分出来的validation datasets。
2. 什么是oob_score
对于单棵用采样集训练完成的决策树Ti,用袋外数据运行后会产生一个oob_score (返回的是R square来判断),对每一棵决策树都重复上述操作,最终会得到T个oob_score,把这T和oob_score平均,最终得到的就是整个随机森林的oob_score