这一篇, 我们希望提升模型的性能, 除了更多的数据,更好的EDA等,集成学习可以从模型的角度提升模型的学习性能, 即将基模型组合成一个大模型。 在介绍集成学习前, 我们先介绍一下Bagging和Boosting的概念。
Bagging:
给定包含m个样本的数据集。每轮从样本中使用Bootstrap sampling(自助采样)的方法抽取m个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中, 即)。可以进行T轮采样,从而可以学习到T个基模型。然后再将T个基模型进行结合。
对分类问题:将上步得到的T个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
Boosting:
先从初始训练集训练出一个基模型,接下来的基模型,会根据之前的模型的学习效果, 相应的修改样本分布,对先前模型学习错误的样本赋予更大的权重。
接下来,想讲一下为什么bagging和boosting可以提升模型的性能。
可以看出,bagging中每个模型基于随机采样的样本,模型相关性比较小, 而boosting,每个模型之间的相关性很强,因为每一个基模型,都和之前的基模型的学习结果相关。
我们再回到方差与偏差的角度:
bagging主要解决的是方差问题, 随着基模型的数量提升,融合模型的方差越来越小,偏差不会有太大的提升,因此基模型不能太弱了,不然融合模型的偏差会比较大。
boosting主要解决的是偏差的问题,随着基模型数量提升,偏差越来越小,但对方差影响较小。因此基模型不能太强,不然会有方差较大的问题,即过拟合。
接下来简单介绍一下Bagging中的典型算法, Random Forest(随机森林)
随机森林以决策树为基模型,构建在Bagging基础上。RF不仅在样本上进行了随机采样, 在属性上也进行了随机采样,每个节点都从所有特征中选择k个特征,在这k个特征中寻找合适的切分特征与切分点,从而进一步降低过拟合。一般情况下, , d是所有特征的个数。因此RF中,基模型的相关性进一步降低了,更好的提升了泛化能力。