集成学习-Bagging-Boosting-AdaBoost_集成模型的期望错误大于等于所有模型的平均期望错误的-程序员宅基地

技术标签: 算法  机器学习  人工智能  boost  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=1MEx[ϵ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=1Mfm(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)=M1m=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=1Mfm(x)h(x))2]=Ex[(M1m=1Mϵm(x))2]=Ex[M21m=1Mn=1Mϵm(x)ϵn(x)]=M21m=1Mn=1MEx[ϵ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.

一个有效的集成学习模型要求各个基模型(弱分类器)之间的差异尽可能大,为了增加基模型之间的差异,可以采用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=1Mα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=1Mα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 m1次迭代之后得到:
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} Fm1(x)=t=1m1α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=1Nexp(y(n)(Fm1(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)Fm1(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=1Nwm(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)=12I(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=1Nwm(n)(1αmy(n)fm(x(n))+21αm2)αmn=1Nwm(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),1nN时的加权错误最小的分类器。
这样一来,求出了 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)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AIHUBEI/article/details/104999441

智能推荐

adb shell uiautomator dump /doinf/uidumpa.xml 一切正常,就是没有显示这个文件。_adb shell uiautomator dump无效-程序员宅基地

文章浏览阅读1.2k次。返回的UI hierchary dumped to: /doinf/uidumpa.xml但是手机里就是没有这个文件。这是什么情况啊?_adb shell uiautomator dump无效

kaldi中声纹识别ivector模型_kaldi i-vector-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏24次。1.数据准备:无论使用kaldi来做语音识别还是说话人识别,第一步就是数据准备,对于说话人识别来说,需要准备的几个文件为wav.scp,utt2spk,spk2utt这三个文件。对应的格式如下: 1.1 wav.scp有两列,第一列是key,这个可以一定要唯一;第二列是 wav的路径wavpath; 1.2 utt2spk也有两列,第一列是key,与wav.scp的第一列一样;..._kaldi i-vector

2019-程序员宅基地

文章浏览阅读4.2k次。序言2019年好像没几天就要结束了,所以写个渣渣凑个数量,爱看的看看,不爱看的滑过。2019是猪队友的元年,所以总结为2个字就是炮灰。风言风语1 猪队友你..._office2019专业增强版激活

Git(五)常用命令精简整理_git bash命令-程序员宅基地

文章浏览阅读896次。全局设置git config --global user.name "acgkaka"git config --global user.email "[email protected]"初始化.git文件夹git init将当前文件夹连接到test远程仓库git remote add origin https://gitee.com/acgkaka/test.git将本地的当前分支推送到远程的master分支,同时指定origin为默认主机,(后面再使用git push的时候就可以不加任_git bash命令

spring boot2.0自定义注入mongoTemplate使用审计标签@EnableMongoAuditing报错_springboot2.0+mongotemplate-程序员宅基地

文章浏览阅读6k次。项目原来在spring boot1.5.9版本时候使用@EnableMongoAuditing用同样的方法注入并没有报错,当切换到2.0版本是莫名其妙的出问题了,搞的我一脸懵逼,花了好久都没解决,后来偶然看到我们公司一个大佬的自定义注入的的方式,瞬间感觉到了王者和青铜的差距。 下面是配置代码@Configuration@EnableMongoAuditing@PropertySourc..._springboot2.0+mongotemplate

【Electron-Vue】搭建Electron-Vue前端桌面应用_electron-vue文档-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏7次。最近准备写一个前端桌面应用,了解到了一个新的框架——Electron,它是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。接下来,我们就来搭建一个基于vue的electron应用吧。_electron-vue文档

随便推点

PL2586/USB2.0HUB工业级多口集线器扩展芯片|MA8601升级版_usb 扩展 芯片-程序员宅基地

文章浏览阅读355次。PL2586是旺玖新出的一款USB HUB 芯片PL2586是一项创新,它集成了符合USB-IF“电池充电规范修订版1.2”的功能,支持便携式设备的快速充电功能。此功能将PL2586转变为“通用充电解决方案”(UCS)兼容的基于电池的便携式设备的USB充电集线器,由GSMA推广。当在下游端口检测到符合B.C.标准的便携式设备时,PL2586中的专用端口可以处理充电请求。而且,在握手完成后,PL2586允许便携式设备达到900mA(高速);1.5A(低速/全速)来自充电下游端口(CDP)或1.5A来自_usb 扩展 芯片

本周直播预告|OCR打卡营12月21日(周二)起每晚八点半正式开讲!-程序员宅基地

文章浏览阅读109次。直播课表12月21日(周二)正式开讲!课程报名地址https://aistudio.baidu.com/aistudio/course/introduce/25207内容概览OCR方向万星...

管理心理--程序员如何选择职业赛道-程序员宅基地

文章浏览阅读2.1k次,点赞81次,收藏22次。当然,除非你创业,不然做不同类型的系统,对一个程序员来说,没啥不同,我带过的同学,有很多做着搜索引擎,突然转到游戏引擎,或其它基础架构组件的。一是了解软件运行的原理,知道系统薄弱点在哪,比如曾经一个下属在转为测试后,测试系统稳定性,必有一项:就是拿乱码去测试,看系统是否还能正常稳定地运行。很多系统将自己的稳定性,交给别人请求的合法性,这是不对的。但有编码经验的同学,在做运维实施,尤其是在客户现场,做一些私有化的安装部署时,面对系统的日志、模块的日志、配置,能更快、更专业地把问题定位出来。

mac 锁屏及锁屏快捷键设置_mac mini 快捷键设置 锁屏-程序员宅基地

文章浏览阅读1.4k次。自己第一次使用的是 钥匙串访问中的锁定屏幕,详细见博文http://blog.sina.com.cn/s/blog_768c0b450101dxj3.html但是个人觉得还是快捷键使用的比较方便,后来找到了一个方法1.打开Automator–>新建一个Service–>在搜索里面输入shell,然后拖到右侧编辑区。在文本框中删除cat,输入(注意单引号也要输_mac mini 快捷键设置 锁屏

HR_ROS 节点信息-程序员宅基地

文章浏览阅读91次。https://stackoverflow.com/questions/24638063/install-node-serialport-module-on-arm-linuxhttps://blog.csdn.net/minchina91/article/details/40260263gitclonehttps://github.com/creationix/nvm.git~/...._ros中的电池节点

mtu设置--解决部分网站打不开的问题_为什么temu国内打不开-程序员宅基地

文章浏览阅读1.9w次,点赞2次,收藏19次。资料一: 一、常见问题介绍1、什么情况下需要改MTU?  如果您的动态域名网站不能被正常访问,很难连接,连接上也非常慢,请试试把DirectSend设为“总是关闭”。如果关闭后可以正常访问,这种情况就需要修改MTU。如果您的网站连接正常,只是下载速度慢,就不必改MTU了。请跳过这一节。2、什么是MTU?  MTU是Maximum Transmission _为什么temu国内打不开