目录
关注降低variance,选择bias较小的基学习器
Bagging
Stacking
Random Forest
关注降低bias,选择variance较小的基学习器
Adaboost
Boosting
关注降低variance,选择bias较小的基学习器
Bagging
给定m个样本的数据集,利用有放回的随机采样法,得到T个含有m个样本的训练集,然后训练基学习器得到T个基学习器,对分类任务采用投票法,对回归任务采用平均法。
每个基学习器只使用了m个样本中约63.2%的样本,剩下36.8%的样本可用作验证集。
样本扰动
Stacking
从初始数据集中训练出T个初级学习器,然后将T个初级学习器的输出当作次级学习器的样例输入,而初始样本的标签仍作为样例标记,用新得到的数据集训练次级学习器。
Random Forest
Bagging中的典型代表,样本扰动+属性扰动
关注降低bias,选择variance较小的基学习器
Adaboost
从初始数据集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器出错的训练样本再后面训练构成中得到更多的关注,然后利用调整后的样本分布来训练下一个基学习器,如此重复,最后对每轮训练得到的基学习器进行加权后相加。(基学习器常采用回归树和逻辑回归)
Boosting
为什么说bagging是减小方差,而boosting是减小偏差?
(为什么说bagging是减少variance,而boosting是减少bias? - 知乎)
在这里补充一个variance和bias的关系。
- bias描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,简单讲,就是在样本上拟合的好不好。要想在bias上表现好,low bias,就得复杂化模型,增加模型的参数,但这样容易过拟合,过拟合对应上图是high variance,点很分散。 low bias对应就是都打在靶心附近,但是很分散
- variance描述的是样本上训练出来的模型在测试集上的表现,要想在variance上表现好,low variance,就要简化模型,减少模型的参数,但这样容易欠拟合,欠拟合对应上图是high bias,点偏离中心。low variance对应就是点都打的很集中,但是不在靶心附近。
为啥bagging中方差大,boosting中方差小?
最主要的原因来自数据。
bagging思想中方差大的原因是:因为采用了抽样的方式,所以需要抽n次,用这n次来训练模型减少数据中方差带来的影响。
boosting思想中方差小的原因是:因为每次训练时使用了所有数据,所以方差小。
bagging中基学习器一般比较复杂,其bias低,variance较大,所以通过有放回抽样的方式来训练多棵树(从数据层面来处理方差的思路),减少variance带来的影响;
boosting中基学习器一般比较简单,每个学习器之间variance较小,bias较大,所以通过迭代的方式来拟合bias,减少bias带来的影响。boosting也能减少variance:xgboost和lightgbm也引入了样本采样+特征采样,同时训练过程中会对样本reweight,其实时一种广义的bagging.