集成学习(Bagging和Boosting)

一、概念

集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。

Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。

集成学习在各个规模的数据集上都有很好的策略:

  • 数据集大:划分成多个小数据集,学习多个模型进行组合
  • 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合

 

二、Bagging(套袋法)

1、其算法过程如下:

  • 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping(有放回采样)的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。k个训练集之间是相互独立的。
  • 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。
  • 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

2、案例

X 表示一维属性,Y 表示类标号(1或-1)测试条件:当x<=k时,y=?;当x>k时,y=?;k为最佳分裂点

下表为属性x对应的唯一正确的y类别

现在进行5轮随机抽样,结果如下

集成学习(Bagging和Boosting)_第1张图片

集成学习(Bagging和Boosting)_第2张图片

每一轮随机抽样后,都生成一个分类器

然后再将五轮分类融合

集成学习(Bagging和Boosting)_第3张图片

对比符号和实际类,我们可以发现:在该例子中,Bagging使得准确率可达90%

3、常用的集成算法类是随机森林

在随机森林中,通过自助法(bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取n个样本生成新的训练样本集合训练决策树,然后按以上步骤生成m棵决策树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于独立抽取的样本。 单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样本可以通过每一棵树的分类结果经统计后选择最可能的分类,是一种bagging的思想。

集成学习(Bagging和Boosting)_第4张图片

 

三、Boosting

 AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数 f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)

关于Boosting的两个核心问题:

1、在每一轮如何改变训练数据的权值或概率分布?

通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

2、通过什么方式来组合弱分类器?

通过加法模型将弱分类器进行线性组合,比如:

AdaBoost(Adaptive boosting)算法:刚开始训练时对每一个训练例赋相等的权重,然后用该算法对训练集训练t轮,每次训练后,对训练失败的训练样本赋以较大的权重,也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。

GBDT(Gradient Boost Decision Tree):每一次的计算是为了减少上一次的残差,GBDT在残差减少(负梯度)的方向上建立一个新的模型。损失函数(loss function)越大,说明模型越容易出错,如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度的方向上下降。

集成学习(Bagging和Boosting)_第5张图片

 

四、Bagging、Boosting二者之间的区别

1、样本选择上:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2、样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3、预测函数:

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4、并行计算:

Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

5、bagging可以减少variance,而boosting可以减少bias

(1)什么是variance,什么是bias?

集成学习(Bagging和Boosting)_第6张图片

也就是说,High variance 是model过于复杂overfit,记住太多细节noise,受outlier影响很大;high bias是underfit,model过于简单,cost function不够好。

(2)为什么bagging可以减少variance?bagging随机选取data的subset,outlier因为比例比较低,参与model training的几率也比较低,所以bagging降低了outliers和noise对model的影响,所以降低了variance。

(3)为什么boosting可以减少bias?boosting是在优化loss function,在降低loss,那么很显然,这在很大程度上是减少bias。

 

参考地址:

https://www.cnblogs.com/earendil/p/8872001.html

https://www.zhihu.com/question/26760839

 

 

 

你可能感兴趣的:(机器学习)