集成学习:Bagging & Boosting

Posted shiiiilong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成学习:Bagging & Boosting相关的知识,希望对你有一定的参考价值。

随机森林,GBDT,XGBoost,独立同分布

核心思想

将多个弱分类器组装成一个强分类器 。

前置知识

Bias & Variance

定义:

$ bias=\\barf(x) -y $,为模型的期望预测与真实值之间的差异。

$ variance=\\mathbbE_\\mathcalD [(f(x;\\mathcalD)-\\barf(x))^2] $,模型在数据集 \\(\\mathcalD\\) 上的鲁棒性。

Bagging (bootstrap aggregating)

Bootstrap:有放回的抽样方法

算法流程:

  • Bootstrap采样出来 k 份训练集(又放回抽样保证 k 份训练集相互独立)
  • 在 k 个训练集上训 k 个基模型
  • aggregating:
    • 分类任务:投票
    • 回归任务:平均值

优点:

  • 可以并行
  • 主要降低 Variance,对 Bias 无明显作用。适用于 High Variance & Low Bias 的模型
    • 当 k 个模型相互独立:\\(Var(\\frac1k\\sum_i^kX_i) = \\frac1k^2Var(\\sum_i^kX_i) = \\frac\\sigma ^2k\\)
      • \\(Var(cX)=c^2Var(X)\\)
      • $Var(X+Y)=Var(X)+Var(Y) $ ,其中 \\(X\\)\\(Y\\) 独立

算法代表

随机森林 = Bagging + 决策树

Boosting

算法流程:

  • 每轮迭代:
    • 针对上轮基模型结果:提高分错样本的权重,降低分对样本的权重
    • 在新样本权重上训本轮基模型
  • 线性组合所有基模型

算法优点:

1、序贯式集成方法(Sequential Ensemble)。每轮迭代生成的基模型,主要提升前一代基模型表现不好的地方。

2、不断迭代弱分类器,从而降低 Bias。适用于 Low Variance & High Bias 的模型

算法代表

AdaBoost

算法:
  • 初始化训练集权重分布值
  • while
    • 在当前权重上训练基模型 \\(G_m(X)\\)
    • 计算该模型权重 \\(a_m\\)(模型预测误差越小,权重越大)
    • 更新训练集权重(依据分类效果,分的差的权重高)
  • 加权各基模型,得到最终强分类器 \\(f(X)=\\sum_m^Ma_mG_m(X)\\)
其他:

正则化/步长 : \\(v\\)\\(v\\) 越小,需要迭代更多个基模型。

\\(f_m(X)=f_m-1+ v a_mG_m(X)\\)

通常用步长和最大迭代次数来决定拟合效果

、GBDT、XGBoost等。

提升树:每个基模型拟合上一个模型的残差

Bagging,Boosting二者之间的区别

1)样本选择:

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

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

2)样例权重:

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

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

3)预测函数:

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

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

4)并行计算:

Bagging:可以并行生成

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

随机森林算法原理小结

来自:https://www.cnblogs.com/pinard/p/6156009.html

集成学习有两个流派,一个是boosting,特点是各个弱学习器之间有依赖关系;一个是bagging,特点是各个弱学习器之间没依赖关系,可以并行拟合。

1.  bagging的原理

在集成学习原理总结中,给出bagging的原理图。

技术分享图片

 

 

  Bagging的弱学习器之间没boosting那样的联系。它的特点在“随机采样”。

  随机采样常见的是自助随机采样,即有放回的随机采样。Bagging算法,一般会随机采集和训练集样本数m一样的个数的样本。这样得到的采样集和训练集样本个数相同,但样本内容不同。我们对m个样本训练集做T次的随机采样,则由于随机性,T个采样集各不相同。

  注意到这和GBDT的子采样不同。GBDT的子采样是无放回采样,而Bagging的子采样是放回采样。

  对于一个样本,它在某一次含m个样本的训练集的随机采样中,每次被采集到的概率是1/m。

  样本在m次采样中始终不被采到的概率是:

P(一次都未被采集) = (1-1/m)m

  对m取极限得到:

技术分享图片

  也就是说bagging的每轮随机采样中,训练集大约有36.8%的数据没被采集。

  对于大约36.8%没被采样的数据,称为“袋外数据”。这些数据没参与训练集模型的拟合,但可以作为测试集用于测试模型的泛化能力,这样的测试结果称为“外包估计”。

  bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。

  bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。

  由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。

 

 

 



以上是关于集成学习:Bagging & Boosting的主要内容,如果未能解决你的问题,请参考以下文章

集成学习总结 & Stacking方法详解

2. 集成学习(Ensemble Learning)Bagging

集成学习Bagging算法Bagging+Pasting随机森林极端随机树集成(Extra-trees)特征重要度包外评估

集成学习算法总结----Boosting和Bagging

集成学习算法总结----Boosting和Bagging

集成学习记录(Boosting和Bagging)