集成学习:Bagging & Boosting
Posted shiiiilong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成学习:Bagging & Boosting相关的知识,希望对你有一定的参考价值。
核心思想
将多个弱分类器组装成一个强分类器 。
前置知识
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\\) 独立
- 当 k 个模型相互独立:\\(Var(\\frac1k\\sum_i^kX_i) = \\frac1k^2Var(\\sum_i^kX_i) = \\frac\\sigma ^2k\\)
算法代表
随机森林 = 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的主要内容,如果未能解决你的问题,请参考以下文章
2. 集成学习(Ensemble Learning)Bagging
集成学习Bagging算法Bagging+Pasting随机森林极端随机树集成(Extra-trees)特征重要度包外评估