Bagging 和 Boosting都属于集成学习(ensemble learning)方法,即通过构建并结合多个学习器来完成学习任务。例如对于分类问题,我们可以学习多个弱分类器,然后根据一定的规则对各个弱分类器的结果进行整合,得到最终的分类结果。
1. Bagging
Bagging是指采用Bootstrap(有放回的均匀抽样)的方式从训练数据中抽取部分数据训练多个分类器,每个分类器的权重是一致的,然后通过投票的方式取票数最高的分类结果最为最终结果。
Bagging同样可以处理回归(regression)问题,只需将投票的方式改为求均值,即将各个弱分类器的结果的平均值作为最终结果。
2.Boosting
Boosting是一族可将弱学习器提升为强学习器的算法。其工作机制为:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
3.Bagging 与 Boosting的区别
(1)训练样本
Bagging:通过Booststrap sampling(有放回的均匀抽样)的方式从训练集中出去数据训练各个弱分类器。
注:Bootstrap sampling方法:每当选中一个元组,这个元组同样也可能再次被选中并再次添加到训练集中。
Boosting:各个弱分类器的训练集不是独立的,每一个弱分类器的训练集都是其上一个弱分类器的学习结果,根据错误率进行取样(给予训练样本不同的权值)。
(2)分类器
Bagging:每个分类器都赋予相同的权重。
Boosting:每个分类器的权重是不同的,分类误差小的分类器将获得更大的权重。
(3)分类器的获取方式
Bagging:每个分类器可以并行生成。
Boosting:每个分类器只能依赖其上一个分类器的结果顺序生成。
(4)方差-偏差
从方差-偏差分解的角度看,Boosting 和 Bagging的主要区别如下
Bagging 主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。
Boosting 主要关注降低偏差,因此Boosting能在基于泛化性能相当弱的学习器上构建出很强的集成。
参考:《机器学习》周志华
《機器學習: Ensemble learning之Bagging、Boosting和AdaBoost》Tommy huang