8.3 Bagging 与 随机森林
关键词: Bagging ; 随机森林;
8.3.1 Bagging
上上一节已经提到,集成学习首要任务就是要解决个体学习器 “好而不同”,要让个体学习器尽可能的独立;而完全独立是“不存在”的,所以,设法让个体学习器尽可能具有较大的差异性。
上一节提到了采用Boosting算法来串行生成个体学习器,Boosting更关注于减少偏差。而还有一种可并行生成个体学习器的算法,就是Bagging算法 ,Bagging(Boostrap AGGregatING的缩写)。
Bagging的做法是对训练样本进行有放回的采样,从而产生若干个不同的子集,每个子集训练一个个体分类器。采样方法采用自助采样法(boostrap sampling),即训练集D有m个样本,有放回的进行m次随机采样,那么得到子集D1总共也是m个样本,但是D1中样本是有重复的。通过计算
limm→∞(1−1m)m=1e≈0.368
,可知采用有放回的采样,训练集D中大约63.2%的样本出现在子集D1中,而剩下的36.8%是不出现在D1中. 通常那36.8%的样本作为验证集来对泛化性能进行”包外估计”(out-of-bag estimate)。 Bagging算法还是很容易理解的(相比于Adaboost而言)
从偏差-方差分解的角度看,Bagging主要关注降低方差。方差是度量训练集的变动而导致的学习性能的变化。而Bagging就是用不同训练集(即训练集的变动)去训练模型的,所以模型最终的方差肯定小啦。因此,Bagging对不剪枝的决策树和神经网络等易受样本扰动的学习器上效果明显。
—————————————分割线————————————
8.3.2 随机森林
随机森林(Random Forest)是Bagging的一个扩展变体。Bagging在处理多样性(个体学习器之间的差异性)问题上,采用的是样本上的“扰动”。而随机森林进一步扩展,不仅采用自助法采样以获得样本上的“扰动”,还引入随机属性选择,来进行属性的扰动。最终 样本扰动 + 属性扰动 进一步提升了集成模型的性能。
传统的决策树在划分属性时是在当前节点的属性集合(假设有d个属性)中选择一个最优属性;而在随机森林中,对基决策树的每个结点,先从该结点的属性集合中随机挑选出k个属性子集,从这个k个子集中选择一个最优属性用于划分。这里的k控制了随机性的引入,通常推荐值 k=log2d 。简而言之,就是从d个属性中随机挑选k个属性用于最有划分。