集成学习

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)=M1​m=1∑M​Ex​[ϵ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)=M1​m=1∑M​fm​(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=1M​fm​(x), F ( x ) F(\boldsymbol{{x}}) F(x)的期望在: 1 M R ˉ ( f ) \cfrac{1}{\boldsymbol{M}}\bar{\mathcal{R}}(f) M1​Rˉ(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​[(M1​m=1∑M​fm​(x)−h(x))2]=Ex​[(M1​m=1∑M​ϵm​(x))2]=Ex​[M21​m=1∑M​n=1∑M​ϵm​(x)ϵn​(x)]=M21​m=1∑M​n=1∑M​Ex​[ϵ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)≥M1​Rˉ(f)(式7)
也就是说:集成模型的期望错误大于等于所有模型的平均期望错误的 1 / M 1/M 1/M,小于等于所有模型的平均期望错误。

⟹ \Longrightarrow ⟹为了得到更好的模型集成效果,则需要每个模型之间具备一定的差异性。且随着模型数量的增多,其错误率也会下降,最终趋近于0.

一个有效的集成学习模型要求各个基模型(弱分类器)之间的差异尽可能大,为了增加基模型之间的差异,可以采用BaggingBoosting这两类方法。

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​αm​fm​(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​αm​fm​(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​αt​ft​(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∑N​exp(−y(n)(Fm−1​(x(n))+αm​fm​(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∑N​wm(n)​exp(−αm​y(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∑N​wm(n)​(1−αm​y(n)fm​(x(n))+21​αm2​)∝αm​n=1∑N​wm(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​)∝ϵm​exp(α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​=∑n​wm(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} α=21​logϵm​1−ϵm​​(式17)

集成学习-Bagging-Boosting-AdaBoost相关推荐

  1. 【机器学习】集成学习之boosting AdaBoost

    Boosting Boosting策略在上一篇中有提到过,这里再说一遍. Boosting策略的核心思想就是对错误分类的样本投入更大的关注.采用的是加法模型和向前分步算法,向前分步算法中的每一步都会改 ...

  2. 机器学习--集成学习--Bagging,Boosting,Stacking

    在一些数据挖掘竞赛中,后期我们需要对多个模型进行融合以提高效果时,常常会用到Bagging,Boosting,Stacking等这几个框架算法.下面就来分别详细讲述这三个框架算法.这里我们只做原理上的 ...

  3. 集成学习bagging, boosting, stacking

    集成学习能够通过训练数据集产生多个学习模型,然后通过一定的结合策略生成强学习模型. bagging 可以并行执行 每一棵树权重是一样的 随机森林 Bagging是bootstrap aggregati ...

  4. 集成学习(Bagging和AdaBoost和随机森林(random forest))

    前言 集成学习的特点就是一个最终模型由很多分类器集成起来,最终通过投票或者加权的方式来获得最终结果.有两种经典的方法:bagging和adaboost. bagging bagging做法 其中: y ...

  5. 集成学习——Bagging、Boosting、Stacking

    目录 偏差与方差 投票法 集成学习 Bagging Bootstraps Bagging Boosting 基本概念 Adaboost 前向分步算法 梯度提升树(GBDT) XGBoost Light ...

  6. 集成学习-Bagging和Boosting算法

    文章目录 集成学习 Bagging 随机森林 Bosting Adaboost GBDT XGBoost 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网 ...

  7. 树模型系列之集成学习(Bagging、Boosting、Stacking)

    文章目录 树模型系列之集成学习(Bagging.Boosting.Stacking) bagging Boosting Stacking 偏差与方差 集成学习的偏差与方差 Bagging 的偏差与方差 ...

  8. 【集成学习】boosting和bagging

    视频链接 思想 Boosting和Bagging Boosting Adaboost 算法流程 (分类误差率小的时候,\(\alpha_{m}\):权重就更大) (\(Z{m-1}\)相当于一个归一化 ...

  9. 集成学习之Boosting

    集成学习之Boosting 1.boosting集成原理 1.1 什么是boosting 随着学习的积累从弱到强 简而言之:每新加入一个弱学习器,整体能力就会得到提升 代表算法:Adaboost,GB ...

  10. 集成学习——BAGGING和随机森林

    集成学习--BAGGING和随机森林 集成学习--BAGGING和随机森林 1.什么是集成学习 2.怎样进行集成学习 3.Bagging方法 4.Bagging方法训练.预测过程 5.Bagging方 ...

最新文章

  1. python strptime_Python法律实务应用——制作自己的LPR计算器(上)
  2. MySQL中INDEX,PRIMARY,UNIQUE,FULLTEXT之间的区别?
  3. mmcv 对比 cv2 处理视频速度
  4. 2022.2.22显示器连接器引脚信号定义2
  5. Linux C线程同步的三种方法
  6. 恢复rm删除的文件(ext3
  7. Git使用教程:超详细、超傻瓜、超浅显、真正手把手教
  8. 使用C#控制远程计算机的服务[转]
  9. 性能测试以及实际中有关性能测试的问题
  10. idea调试jdk源码
  11. keras深度学习之猫狗分类三(特征提取)
  12. [hihoCoder太阁最新面经算法竞赛1] 穿越禁区 (DFS,并查集,计算几何) 难题
  13. C语言基础学习——编译过程
  14. 大规模容器镜像管理方案
  15. acm快速输入法 有效解决超时
  16. 全球与中国钠还原剂市场深度研究分析报告
  17. 9月编程排行榜新鲜出炉霸榜还得是它~
  18. latex调行距_LaTeX 的行距机制
  19. R Failed to install 'unknown package' from GitHub: schannel: failed to receive handshake, SSL/TLS
  20. speedoffice(Word)如何添加批注

热门文章

  1. 清华毕业计算机教授遭持枪劫车!靠“贪心算法”追回秒杀美国警察
  2. linux 下启动 jar包
  3. axios英文文档翻译
  4. 普中tft彩屏驱动程序下载_基于51单片机的2.0-R61503B 8bits TFT彩屏刷屏触摸驱动程序...
  5. 我的世界苦力怕代码逻辑分析
  6. WEB标准以及W3C的理解与认识
  7. 公文种类、行文要求概述
  8. 发展简史jQuery时间轴特效
  9. 【学习笔记】- 支付网关的设计
  10. 【猎豹浏览器】转投猎豹,暂时告别浏览器综合症