集成学习-Bagging-Boosting-AdaBoost
集成学习
1.导言
一个形象的比喻:“三个臭皮匠赛过诸葛亮!”
假设输入 x \boldsymbol{{x}} x和输出 y \boldsymbol{{y}} y之间的真实关系为: y = h ( x ) \boldsymbol{{y}}=h(\boldsymbol{{x}}) y=h(x).对于 M \boldsymbol{{M}} M个不同的模型 f 1 ( x ) , ⋯ , f M ( x ) f_1(\boldsymbol{{x}}),\cdots,f_{\boldsymbol{{M}}}(\boldsymbol{{x}}) f1(x),⋯,fM(x),每个模型的期望错误定义如下:
R ( f m ) = E x [ ( f m ( x ) − h ( x ) ) 2 ] = E x [ ϵ m ( x ) 2 ] (式1) \begin{aligned} \mathcal{R}(f_m)&=\operatorname{E}_{\boldsymbol{{x}}}\left[(f_m(\boldsymbol{{x}})-h(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[\epsilon_m(\boldsymbol{{x}})^2\right]\tag{式1} \end{aligned} R(fm)=Ex[(fm(x)−h(x))2]=Ex[ϵm(x)2](式1)
其中, ϵ m ( x ) = ( f m ( x ) − h ( x ) ) \epsilon_m(\boldsymbol{{x}})=(f_m(\boldsymbol{{x}})-h(\boldsymbol{{x}})) ϵm(x)=(fm(x)−h(x))为模型 m \boldsymbol{m} m在样本 x \boldsymbol{x} x上的错误。
这样一来,所有模型的平均错误为:
R ˉ ( f ) = 1 M ∑ m = 1 M E x [ ϵ m ( x ) 2 ] (式2) \bar{\mathcal{R}}(f)=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}\operatorname{E}_{\boldsymbol{{x}}}\left[\epsilon_m(\boldsymbol{{x}})^2\right]\tag{式2} Rˉ(f)=M1m=1∑MEx[ϵm(x)2](式2)
集成学习(Ensemble Learning)是采取某种策略(比如:直接平均,加权平均)将多个模型集成起来,通过群体决策来提高准确率。集成学习首要的问题是如何集成多个模型。
最直接的策略是:直接平均,即通过“投票”。基于投票的集成模型 F ( x ) F(\boldsymbol{{x}}) F(x)定义为:
F ( x ) = 1 M ∑ m = 1 M f m ( x ) (式3) F(\boldsymbol{{x}})=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}})\tag{式3} F(x)=M1m=1∑Mfm(x)(式3)
在这里,通过简单投票机制的集成模型 F ( x ) = 1 M ∑ m = 1 M f m ( x ) F(\boldsymbol{{x}})=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}}) F(x)=M1∑m=1Mfm(x), F ( x ) F(\boldsymbol{{x}}) F(x)的期望在: 1 M R ˉ ( f ) \cfrac{1}{\boldsymbol{M}}\bar{\mathcal{R}}(f) M1Rˉ(f)和 R ˉ ( f ) \bar{\mathcal{R}}(f) Rˉ(f)之间。
【证明】:根据定义,集成模型的期望错误为:
R ( F ) = E x [ ( 1 M ∑ m = 1 M f m ( x ) − h ( x ) ) 2 ] = E x [ ( 1 M ∑ m = 1 M ϵ m ( x ) ) 2 ] = E x [ 1 M 2 ∑ m = 1 M ∑ n = 1 M ϵ m ( x ) ϵ n ( x ) ] = 1 M 2 ∑ m = 1 M ∑ n = 1 M E x [ ϵ m ( x ) ϵ n ( x ) ] (式4) \begin{aligned} \mathcal{R}(F)&=\operatorname{E}_{\boldsymbol{{x}}}\left[(\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}})-h(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[(\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}\epsilon_m(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[\cfrac{1}{\boldsymbol{M}^2}\sum_{m=1}^{{\boldsymbol{M}}}\sum_{n=1}^{{\boldsymbol{M}}}\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]\\ &=\cfrac{1}{\boldsymbol{M}^2}\sum_{m=1}^{{\boldsymbol{M}}}\sum_{n=1}^{{\boldsymbol{M}}}\operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]\tag{式4} \end{aligned} R(F)=Ex[(M1m=1∑Mfm(x)−h(x))2]=Ex[(M1m=1∑Mϵm(x))2]=Ex[M21m=1∑Mn=1∑Mϵm(x)ϵn(x)]=M21m=1∑Mn=1∑MEx[ϵm(x)ϵn(x)](式4)
其中, E x [ ϵ m ( x ) ϵ n ( x ) ] \operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right] Ex[ϵm(x)ϵn(x)]为两个不同模型错误的相关性。如果每一个模型的错误是不相关的,则有:
∀ m ≠ n , E x [ ϵ m ( x ) ϵ n ( x ) ] = 0 (式5) \forall{m\neq{n}},\operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]=0\tag{式5} ∀m=n,Ex[ϵm(x)ϵn(x)]=0(式5)
如果,每个模型的错误都是相同的,则:
∀ m ≠ n , ϵ m ( x ) = ϵ n ( x ) (式6) \forall{m\neq{n}},\epsilon_m(\boldsymbol{{x}})=\epsilon_n(\boldsymbol{{x}})\tag{式6} ∀m=n,ϵm(x)=ϵn(x)(式6)
且由于: ∀ m , ϵ m ( x ) ≥ 0 \forall{m},\epsilon_m(\boldsymbol{{x}})\ge0 ∀m,ϵm(x)≥0,于是得到:
R ˉ ( f ) ≥ R ( f ) ≥ 1 M R ˉ ( f ) (式7) \bar{\mathcal{R}}(f)\ge{{\mathcal{R}}(f)}\ge{\cfrac{1}{\boldsymbol{M}}\bar{\mathcal{R}}(f)}\tag{式7} Rˉ(f)≥R(f)≥M1Rˉ(f)(式7)
也就是说:集成模型的期望错误大于等于所有模型的平均期望错误的 1 / M 1/M 1/M,小于等于所有模型的平均期望错误。
⟹ \Longrightarrow ⟹为了得到更好的模型集成效果,则需要每个模型之间具备一定的差异性。且随着模型数量的增多,其错误率也会下降,最终趋近于0.
一个有效的集成学习模型要求各个基模型(弱分类器)之间的差异尽可能大,为了增加基模型之间的差异,可以采用Bagging和Boosting这两类方法。
2.Bagging类方法
Bagging类方法是通过随机构造训练样本,随机选取特征等方法来提高每个基模型之间的独立性,代表性方法有:Bagging和随机森林。
→ B a g g i n g \rightarrow{Bagging} →Bagging:(Bootstrap Aggregating)是通过不同模型的训练数据集的独立性来提高模型之间的独立性。在原始数据集上进行有放回的随机采样,得到 M M M个比较小的训练集,并训练 M M M个模型,然后通过投票的方法进行模型集成。
→ \rightarrow →随机森林:(Random Forest)是在Bagging的基础上再引入了随机特征,进一步提高每个基模型之间的独立性。再随机森林中,每个基模型都是一棵决策树。
3.Boosting类方法
Boosting类方法,是按照一定顺序来先后训练不同的基模型,每个模型都针对前序模型的错误进行训练。根据前序模型的结果,来调整训练样本的权重,增加不同基模型之间的差异性。Boosting类方法的代表有:Adaboost方法。
→ A d a B o o s t \rightarrow AdaBoost →AdaBoost:Boosting类的集成模型的目标是学习到一个加性模型,即:
F ( x ) = ∑ m = 1 M α m f m ( x ) (式8) F(\boldsymbol{x})=\sum_{m=1}^{\boldsymbol{M}}\alpha_{m}f_m(\boldsymbol{x})\tag{式8} F(x)=m=1∑Mαmfm(x)(式8)
其中, f m ( x ) f_m(\boldsymbol{x}) fm(x)为弱分类器,或者基分类器。 α m \alpha_{m} αm为弱分类器的集成权重, F ( x ) F(\boldsymbol{x}) F(x)就为强分类器。
Boosting类方法的关键:
怎样训练确定每一个弱分类器 f m ( x ) f_m(\boldsymbol{x}) fm(x)及其权重 α m \alpha_{\boldsymbol{m}} αm。做法为:采用迭代的方式来学习每一个弱分类器,也就是按照一定的顺序依次训练每一个弱分类器。具体为:”假设已经训练了 m m m个弱分类器,再训练第 m + 1 m+1 m+1个弱分类器的时候,增加已有弱分类器错分样本的权重,使得第 m + 1 m+1 m+1个弱分类器更加关注已有弱分类器错分的样本“。这样增加每个弱分类器的差异,最终提升集成分类器的准确率。这种方法叫做:AdaBoost算法。
二分类AdaBoost算法过如下:
AdaBoost算法的统计学解释:
AdaBoost算法可以视为一种分步优化的加性模型。损失函数定义如下:
L ( F ) = e x p ( − y F ( x ) ) = e x p ( − y ∑ m = 1 M α m f m ( x ) ) (式9) \begin{aligned} \mathfrak{L}(F) &= exp(- yF(\boldsymbol{x}))\\ &=exp(-y\sum_{m=1}^{\boldsymbol{M}}\alpha_mf_m(\boldsymbol{x}))\tag{式9} \end{aligned} L(F)=exp(−yF(x))=exp(−ym=1∑Mαmfm(x))(式9)
其中, y , f m ( x ) ∈ { − 1 , + 1 } y,f_m{(\boldsymbol{x}})\in\{-1,+1\} y,fm(x)∈{−1,+1}.
若前 m − 1 m-1 m−1次迭代之后得到:
F m − 1 ( x ) = ∑ t = 1 m − 1 α t f t ( x ) (式10) F_{m-1}(\boldsymbol{x})=\sum_{t=1}^{m-1}\alpha_tf_t(\boldsymbol{x})\tag{式10} Fm−1(x)=t=1∑m−1αtft(x)(式10)
则第 m m m次迭代的目标是找到一个 α m \alpha_m αm和 f m ( x ) f_m(\boldsymbol{x}) fm(x)使得损失函数最小,即:
L ( α m , f m ( x ) ) = ∑ n = 1 N e x p ( − y ( n ) ( F m − 1 ( x ( n ) ) + α m f m ( x ( n ) ) ) ) (式11) \mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))=\sum_{n=1}^{N}exp(-y^{(n)}(F_{m-1}(\boldsymbol{x}^{(n)})+\alpha_mf_m(\boldsymbol{x}^{(n)})))\tag{式11} L(αm,fm(x))=n=1∑Nexp(−y(n)(Fm−1(x(n))+αmfm(x(n))))(式11)
令 w m ( n ) = e x p ( − y ( n ) F m − 1 ( x ( n ) ) ) w_m^{(n)}=exp(-y^{(n)}F_{m-1}(\boldsymbol{x}^{(n)})) wm(n)=exp(−y(n)Fm−1(x(n))),那么上式可以写为: L ( α m , f m ( x ) ) = ∑ n = 1 N w m ( n ) e x p ( − α m y ( n ) f m ( x ) ( n ) ) ) (式12) \mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))=\sum_{n=1}^{N}w_m^{(n)}exp(-\alpha_my^{(n)}f_m(\boldsymbol{x})^{(n)}))\tag{式12} L(αm,fm(x))=n=1∑Nwm(n)exp(−αmy(n)fm(x)(n)))(式12)
因为: y , f m ( x ) ∈ { − 1 , + 1 } y,f_m(\boldsymbol{x})\in\{-1,+1\} y,fm(x)∈{−1,+1},则有:
y f m ( x ) = 1 − 2 I ( y ≠ f m ( x ) ) (式13) yf_m(\boldsymbol{x}) = 1-2I(y\neq{f_m(\boldsymbol{x})})\tag{式13} yfm(x)=1−2I(y=fm(x))(式13)
其中, I ( x ) I(\boldsymbol{x}) I(x)为指示函数。
将损失函数进行二阶泰勒展开,得到:
L ( α m , f m ( x ) ) = ∑ n = 1 N w m ( n ) ( 1 − α m y ( n ) f m ( x ( n ) ) + 1 2 α m 2 ) ∝ α m ∑ n = 1 N w m ( n ) I ( y ≠ f m ( x ) ) (式14) \begin{aligned} \mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))&=\sum_{n=1}^{N}w_m^{(n)}\left(1-\alpha_my^{(n)}f_m(\boldsymbol{x}^{(n)})+\cfrac{1}{2}\alpha_m^2\right)\\ &\propto{\alpha_m\sum_{n=1}^{N}w_m^{(n)}I(y\neq{f_m(\boldsymbol{x})})} \end{aligned}\tag{式14} L(αm,fm(x))=n=1∑Nwm(n)(1−αmy(n)fm(x(n))+21αm2)∝αmn=1∑Nwm(n)I(y=fm(x))(式14)
可以得到,当 α m > 0 \alpha_m>0 αm>0时,最优分类器 f m ( x ) f_m(\boldsymbol{x}) fm(x)为:样本权重是 w m ( n ) , 1 ≤ n ≤ N w_m^{(n)},1\le{n}\le{N} wm(n),1≤n≤N时的加权错误最小的分类器。
这样一来,求出了 f m ( x ) f_m(\boldsymbol{x}) fm(x),则式12可以写成:
L ( α m , f m ( x ) ) = ∑ y ( n ) ≠ f m ( ( x ) ( n ) ) w m ( n ) e x p ( α m ) + ∑ y ( n ) = f m ( ( x ) ( n ) ) w m ( n ) e x p ( − α m ) ∝ ϵ m e x p ( α m ) + ( 1 − ϵ m ) e x p ( − α m ) (式15) \begin{aligned} \mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))&=\sum_{y^{(n)}\neq{f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}exp(\alpha_m)+\sum_{y^{(n)}={f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}exp(-\alpha_m)\\ &\propto{\epsilon_mexp(\alpha_m)}+(1-\epsilon_m)exp(-\alpha_m) \end{aligned}\tag{式15} L(αm,fm(x))=y(n)=fm((x)(n))∑wm(n)exp(αm)+y(n)=fm((x)(n))∑wm(n)exp(−αm)∝ϵmexp(αm)+(1−ϵm)exp(−αm)(式15)
其中, ϵ m \epsilon_m ϵm为分类器 f m ( x ) f_m(\boldsymbol{x}) fm(x)的加权错误率。
ϵ m = ∑ y ( n ) ≠ f m ( ( x ) ( n ) ) w m ( n ) ∑ n w m ( n ) (式16) \epsilon_m=\cfrac{\sum_{y^{(n)}\neq{f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}}{\sum_nw_m^{(n)}}\tag{式16} ϵm=∑nwm(n)∑y(n)=fm((x)(n))wm(n)(式16)
于是求取式15关于 α m \alpha_m αm的导数并令为零:
α = 1 2 log 1 − ϵ m ϵ m (式17) \alpha=\cfrac{1}{2}\log{\cfrac{1-\epsilon_m}{\epsilon_m}}\tag{式17} α=21logϵm1−ϵm(式17)
集成学习-Bagging-Boosting-AdaBoost相关推荐
- 【机器学习】集成学习之boosting AdaBoost
Boosting Boosting策略在上一篇中有提到过,这里再说一遍. Boosting策略的核心思想就是对错误分类的样本投入更大的关注.采用的是加法模型和向前分步算法,向前分步算法中的每一步都会改 ...
- 机器学习--集成学习--Bagging,Boosting,Stacking
在一些数据挖掘竞赛中,后期我们需要对多个模型进行融合以提高效果时,常常会用到Bagging,Boosting,Stacking等这几个框架算法.下面就来分别详细讲述这三个框架算法.这里我们只做原理上的 ...
- 集成学习bagging, boosting, stacking
集成学习能够通过训练数据集产生多个学习模型,然后通过一定的结合策略生成强学习模型. bagging 可以并行执行 每一棵树权重是一样的 随机森林 Bagging是bootstrap aggregati ...
- 集成学习(Bagging和AdaBoost和随机森林(random forest))
前言 集成学习的特点就是一个最终模型由很多分类器集成起来,最终通过投票或者加权的方式来获得最终结果.有两种经典的方法:bagging和adaboost. bagging bagging做法 其中: y ...
- 集成学习——Bagging、Boosting、Stacking
目录 偏差与方差 投票法 集成学习 Bagging Bootstraps Bagging Boosting 基本概念 Adaboost 前向分步算法 梯度提升树(GBDT) XGBoost Light ...
- 集成学习-Bagging和Boosting算法
文章目录 集成学习 Bagging 随机森林 Bosting Adaboost GBDT XGBoost 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网 ...
- 树模型系列之集成学习(Bagging、Boosting、Stacking)
文章目录 树模型系列之集成学习(Bagging.Boosting.Stacking) bagging Boosting Stacking 偏差与方差 集成学习的偏差与方差 Bagging 的偏差与方差 ...
- 【集成学习】boosting和bagging
视频链接 思想 Boosting和Bagging Boosting Adaboost 算法流程 (分类误差率小的时候,\(\alpha_{m}\):权重就更大) (\(Z{m-1}\)相当于一个归一化 ...
- 集成学习之Boosting
集成学习之Boosting 1.boosting集成原理 1.1 什么是boosting 随着学习的积累从弱到强 简而言之:每新加入一个弱学习器,整体能力就会得到提升 代表算法:Adaboost,GB ...
- 集成学习——BAGGING和随机森林
集成学习--BAGGING和随机森林 集成学习--BAGGING和随机森林 1.什么是集成学习 2.怎样进行集成学习 3.Bagging方法 4.Bagging方法训练.预测过程 5.Bagging方 ...
最新文章
- python strptime_Python法律实务应用——制作自己的LPR计算器(上)
- MySQL中INDEX,PRIMARY,UNIQUE,FULLTEXT之间的区别?
- mmcv 对比 cv2 处理视频速度
- 2022.2.22显示器连接器引脚信号定义2
- Linux C线程同步的三种方法
- 恢复rm删除的文件(ext3
- Git使用教程:超详细、超傻瓜、超浅显、真正手把手教
- 使用C#控制远程计算机的服务[转]
- 性能测试以及实际中有关性能测试的问题
- idea调试jdk源码
- keras深度学习之猫狗分类三(特征提取)
- [hihoCoder太阁最新面经算法竞赛1] 穿越禁区 (DFS,并查集,计算几何) 难题
- C语言基础学习——编译过程
- 大规模容器镜像管理方案
- acm快速输入法 有效解决超时
- 全球与中国钠还原剂市场深度研究分析报告
- 9月编程排行榜新鲜出炉霸榜还得是它~
- latex调行距_LaTeX 的行距机制
- R Failed to install 'unknown package' from GitHub: schannel: failed to receive handshake, SSL/TLS
- speedoffice(Word)如何添加批注