发布网友
共1个回答
热心网友
本文将介绍Bagging和Boosting两种集成方法,并探讨其优点、缺点和适用范围。
0、预备知识
在学习总结Bagging和Boosting方法之前,有一个预备知识需要学习:Bias(偏差) & Variance(方差),这两个概念在机器学习领域可算是举足轻重。
在此放一张图,用于理解 Bias 和 Variance。
简单来说,Bias 和 Variance 分别代表准 和 确 两个概念。
偏差 (bias) 定义为:[公式] ,为模型的期望预测与真实值之间的差异。
方差 (variance) 定义为:[公式] ,衡量模型对不同数据集 [formula] 的敏感程度,也可以认为是衡量模型的不稳定性。若方差大,则表示数据的微小变动就能导致学习出的模型产生较大差异。一种可能的情形是在训练集上拟合的很好,到了测试集上由于数据的改变致使准确率下降很多,这是典型的过拟合。
推荐阅读: Understanding the Bias-Variance Tradeoff
1、Bagging (bootstrap aggregating)
事实上,Bagging并不是Bag的动名词形式。Bagging是Bootstrap aggregating的缩写。中文意思是自助聚合。而Bootstrap本身是一种有放回的抽样方法(可能抽到重复的样本)。
Bagging的算法流程
Bagging算法特点:
1、可并行的集成方法。每个基模型可以分别、、互不影响地生成。
2、主要降低 Variance,对 Bias 无明显作用。因此,适用于 High Variance & Low Bias 的模型。
偏差角度:Bagging后的偏差与单个模型相近。
由于[公式] ( 共k个基模型,[formula] 为第 [formula] 个基模型的偏差),所以 Bagging后的偏差与单个模型相近。
方差角度:
方差有两个重要的性质,如下:
1、c为常数,则
[公式]
2、随机变量之和的方差等于各变量的方差之和:
[公式]
如果各模型,根据(1)(2)可知,整体方差 [formula]
因此Bagging可以减少方差。
Bagging算法典型代表
随机森林(Random Forest)
2、Boosting
Boosting的核心思想是将多个弱分类器组装成一个强分类器。
关于Boosting的两个核心问题:
1)在每一轮如何改变训练数据的权值或概率分布?
通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
2)通过什么方式来组合弱分类器?
通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。
而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。
Boosting算法特点:
1、序贯式集成方法(Sequential Ensemble)。每轮迭代生成的基模型,主要提升前一代基模型表现不好的地方。
2、不断迭代弱分类器,从而降低 Bias。因此,适用于 Low Variance & High Bias 的模型
基于Boosting算法典型代表
如AdaBoost、GBDT、XGBoost等。
3、Bagging,Boosting二者之间的区别
1)样本选择:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
4、总结
这两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不一样,最终得到不一样的效果,将不同的分类算法套入到此类算法框架中一定程度上会提高了原单一分类器的分类效果,但是也增大了计算量。
下面是将决策树与这些算法框架进行结合所得到的新的算法:
1)Bagging + 决策树 = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树 = GBDT
欢迎关注,我的更多有趣有料的知乎回答: