Bagging与随机森林算法原理总结
在集成学习原理小结中,我们学习到了两个流派,一个是Boosting,它的特点是各个弱学习器之间存在依赖和关系,另一个是Bagging,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合,本文就对集成学习中的Bagging和随机森林做一个总结。
随机森林是集成学习中可以和GBDT相较衡的算法,尤其是它可以很方便地进行并行训练,在现在的大数据大样本下很有诱惑力。
1.Bagging的原理
在集成学习原理总结的Bagging原理这一块,我们画了这么一张流程图
从上图可以看出,Bagging的弱学习器之间没有像Boosting的弱学习器之间存在很强的联系,他的特点在“随机采样”,下面来介绍一下随机采样原理。
随机采样(bootsrap)就是从我们的训练集里面采集固定样本个数的样本,但是每一次采集过后,都会将采集到的样本重新放回。也就说,这一次采集到的样本,下一次人仍有可能会继续被采集到。对于我们的Bagging系列算法,一般会随机采集和训练样本数m一样个数的样本。这样得到的采样集和训练集样本个数相同,但是样本内容不同。如果我们对有m个样本训练集做T次的随机采样,则由于随机性,T个采样集各不相同。
注意到这和GBDT的子采样是不同的,GBDT的子采样是无放回采样,而Bagging的子采样是有有放回采样。
对于这36.8%的没有被采集到的数据,我们称之为袋外数据(Out of bag,简称oog)。这些数据没有参与训练模型的拟合,因此可以检验模型泛化能力。
Bagging对弱学习器没有限制,这和adaboost一样,但是最常用的同样也是决策树和随机森林。
Bagging的集合策略也比较简单,对于分类问题,采用简单投票法,得到票别数最多的那一类作为输出样本的预测类别。对于回归问题,采用简单平均法,对T个弱学习器得到的回归结果进行算数平均得到最终模型输出。
由于Bagging每次训练都进行采样来训练模型,所以模型的泛化能力很强,对于降低模型的方差很有作用。当然对于训练基地额拟合误差就会大一点,也就输模型偏倚会大一些。
2.Bagging算法流程
上一节我们对bagging算法的原理做了总结,这里就对bagging算法的流程做一个总结。相对于Boosting系列的Adaboost和GBDT,bagging算法要简单的多。
输出为最终的强分类器f(X)
- 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
3.随机森林算法
理解了bagging,随机森林(Random Forest 一下简称RF)就好理解了。它是Bagging算法的进化版,也就是说,它的思想仍然是bagging,但是进行了独有的改进。改进如下:
首先,RF使用了CART决策树作为弱学习器,这让我们想到了梯度提升树GBDT。
第二,在梯度提升树的基础上,RF对决策树的建立做了改进,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的而一部分样本特征,这个数字小于n,假设为α,然后在这些随机选择的α个样本特征中,选择一个最优的特征来做进行决策树的左右子树划分,进一步提高了决策树的泛化能力。
说明:如果α = n时,则此时的RF的CART决策树和普通的CART决策树没有什么区别。α值越小,则模型越壮硕,当然此时对于训练集的拟合程度会变差。也就是说α越小,模型的方差会减小(即在测试集上的泛化误差减少),但是偏倚(偏差)会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的m的值。
除了以上两点,RF与普通的bagging算法没有什么差别,下面来总结RF的算法流程:
2)如果时分类算法预测,则T个学习器投出最多票数的类别或者时类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
4.随机森林小结
作为一个可以高度并行并优化的算法,RF在大数据时代大有作为,这里对RF的主要优缺点做一个小小的总结 。
RF的主要优点是:
1)训练可以高度并行化,对于大数据大样本时代训练速度有优势。
2)由于随机选择决策树节点划分特征,这样在样本特征纬度很高的情况下,仍然能够高效率训练模型。
3)在训练后可以输出各个特征对于输出的重要性。
4)由于采取了随机采样,模型的泛化能力强,方差小。
5)相比于Boosting系列的GBDT和Adaboost,RF实现比较简单。
6)对于部分特征确实并不敏感。(这个不太懂!)
RF的主要缺点是:
1)在某些噪音比较大的样本,RF容易陷入过拟合。
2)取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
5.参考资料
刘建平老师博客:
Bagging与随机森林原理小结