【机器学习】集成学习(二)----AdaBoost算法

AdaBoost是Boosting这类算法中的著名代表,它有多种推导方式,比较容易理解的就是基学习器的线性组合来最小化指数损失函数。

【AdaBoost算法过程】

输入:训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ,其中 xiXRn x i ∈ X ⊆ R n ,标记 yiY={1,+1} y i ∈ Y = { − 1 , + 1 }
输出:最终分类器 G(x) G ( x )
(1)初始化原始训练数据集的权值分布 D1 D 1
     D1=(w11,w12,...,w1N) D 1 = ( w 11 , w 12 , . . . , w 1 N ) w1i=1N w 1 i = 1 N
假 设 原 始 训 练 数 据 集 具 有 均 匀 的 权 值 分 布

(2)对 m=1,2,...,M m = 1 , 2 , . . . , M

①使用具有权值分布 Dm D m 的训练数据集学习,得到基分类器 Gm(x):X{1,+1} G m ( x ) : X → { − 1 , + 1 }

②计算 Gm(x) G m ( x ) 在训练数据集上的分类误差率 em e m
     em=i=1NP(Gm(xi)yi)=Gm(xi)yiwmii=1Nwmi=i=1NwmiI(Gm(xi)yi) e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ G m ( x i ) ≠ y i w m i ∑ i = 1 N w m i = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i )
wmimiemGm(x) w m i 表 示 第 m 轮 中 第 i 个 实 例 的 权 值 , 我 们 定 义 分 类 误 差 率 e m 为 被 G m ( x )
误 分 类 的 样 本 对 应 的 权 值 之 和 除 以 所 有 样 本 权 值 之 和 , 由 于 所 有 样 本 权 值
1i=1Nwmi=1emGm(xi)yiwmi 之 和 为 1 , 即 ∑ i = 1 N w m i = 1 , 所 以 e m 即 为 ∑ G m ( x i ) ≠ y i w m i

③计算 Gm(x) G m ( x ) 的系数 αm α m
     αm=12ln1emem α m = 1 2 l n 1 − e m e m
αmGm(x)em12 系 数 α m 表 示 着 对 应 的 基 分 类 器 G m ( x ) 在 最 终 分 类 器 中 的 重 要 性 , 当 e m ≤ 1 2 时 ,
αm0αmem α m ≥ 0 , 并 且 α m 随 着 e m 的 减 小 而 增 大 , 也 就 是 说 分 类 误 差 率 越 小 的 基 分 类 器
在 最 终 分 类 器 中 的 作 用 越 大

④更新训练数据集的权值分布 Dm+1 D m + 1
     Dm+1=(wm+1,1,wm+1,2,...,wm+1,N) D m + 1 = ( w m + 1 , 1 , w m + 1 , 2 , . . . , w m + 1 , N )
: 更 新 权 值 分 布 即 更 新 每 一 个 样 本 的 权 重 , 可 以 写 成 下 面 这 种 形 式 :
     wm+1,i=    {wmiZmeαm,wmiZmeαm,Gm(xi)=yiGm(xi)yi w m + 1 , i =         { w m i Z m e − α m , G m ( x i ) = y i w m i Z m e α m , G m ( x i ) ≠ y i
yiGm(xi)1+1 我 们 也 可 以 把 条 件 项 写 到 式 子 里 , 因 为 y i 和 G m ( x i ) 的 取 值 都 为 − 1 或 + 1 , 也 就
Gm(xi)=yiyiGm(xi)=1;Gm(xi)yiyiGm(xi)=1 是 说 当 G m ( x i ) = y i 时 , y i G m ( x i ) = 1 ; 当 G m ( x i ) ≠ y i 时 , y i G m ( x i ) = − 1
: 因 此 上 式 可 以 写 为 :
     wm+1,i=wmiZmeαmyiGm(xi) w m + 1 , i = w m i Z m e − α m y i G m ( x i )
Zm使Dm+1 上 式 中 的 Z m 是 规 范 化 因 子 , 它 使 D m + 1 成 为 一 个 概 率 分 布
     Zm=i=1NwmieαmyiGm(xi) Z m = ∑ i = 1 N w m i e − α m y i G m ( x i )

(3)对第(2)步中学习到的M个基分类器进行线性组合得到最终分类器
线性组合: f(x)=m=1MαmGm(x) f ( x ) = ∑ m = 1 M α m G m ( x )
最终分类器: G(x)=sign(f(x))=sign(m=1MαmGm(x)) G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) )

算法过程如下图:
这里写图片描述

【AdaBoost算法的训练误差分析】

AdaBoost算法最基本的性质就是在学习过程中不断减少训练误差,即减少训练数据集上的分类误差率。对于AdaBoost算法来说,其最终分类器的训练误差是有上界的。而对于下界,我们不需要知道。
其训练误差界为:
1Ni=1NI(G(xi)yi)1Ni=1Neyif(xi)=m=1MZm 1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) ≤ 1 N ∑ i = 1 N e − y i f ( x i ) = ∏ m = 1 M Z m
1Ni=1NI(G(xi)yi)NN 1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) 即 N个样本中被误分类的样本个数 N , 对 上 式 的 证 明 如 下 :

前半部分: 1Ni=1NI(G(xi)yi)1Ni=1Neyif(xi) 1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) ≤ 1 N ∑ i = 1 N e − y i f ( x i )
G(xi)yiyif(xi)<0,eyif(xi)1 当 G ( x i ) ≠ y i 时 , y i f ( x i ) < 0 , 则 e − y i f ( x i ) ≥ 1 , 由 此 可 得 前 半 部 分

后半部分: 1Ni=1Neyif(xi)=m=1MZm 1 N ∑ i = 1 N e − y i f ( x i ) = ∏ m = 1 M Z m
已知 f(xi)=m=1MαmGm(xi) f ( x i ) = ∑ m = 1 M α m G m ( x i ) Zmwm+1,i=wmieαmyiGm(xi) Z m w m + 1 , i = w m i e − α m y i G m ( x i )
1Ni=1Neyif(xi)=1Ni=1Nem=1MαmyiGm(xi)=1Ni=1Nm=1MeαmyiGm(xi) 1 N ∑ i = 1 N e − y i f ( x i ) = 1 N ∑ i = 1 N e − ∑ m = 1 M α m y i G m ( x i ) = 1 N ∑ i = 1 N ∏ m = 1 M e − α m y i G m ( x i )
=i=1Nw1im=1MeαmyiGm(xi) = ∑ i = 1 N w 1 i ∏ m = 1 M e − α m y i G m ( x i ) 1Nw1iw1i 此 处 我 们 将 1 N 看 成 w 1 i , 因 为 w 1 i 就 是 均 匀 的 权 值 分 布
=i=1Nw1ieα1yiG1(xi)m=2MeαmyiGm(xi) = ∑ i = 1 N w 1 i e − α 1 y i G 1 ( x i ) ∏ m = 2 M e − α m y i G m ( x i )
(i=1Nw1ieα1yiG1(xi)Z1i=1Nw2i) ( 观 察 ∑ i = 1 N w 1 i e − α 1 y i G 1 ( x i ) 可 以 发 现 就 等 于 Z 1 ∑ i = 1 N w 2 i )
=Z1i=1Nw2im=2MeαmyiGm(xi)=Z1i=1Nw2ieα2yiG2(xi)m=3MeαmyiGm(xi) = Z 1 ∑ i = 1 N w 2 i ∏ m = 2 M e − α m y i G m ( x i ) = Z 1 ∑ i = 1 N w 2 i e − α 2 y i G 2 ( x i ) ∏ m = 3 M e − α m y i G m ( x i )
=Z1Z2i=1Nw3im=3MeαmyiGm(xi) = Z 1 Z 2 ∑ i = 1 N w 3 i ∏ m = 3 M e − α m y i G m ( x i )
=...=Z1Z2...ZM1i=1NwMieαMyiGM(xi)=m=1MZm = . . . = Z 1 Z 2 . . . Z M − 1 ∑ i = 1 N w M i e − α M y i G M ( x i ) = ∏ m = 1 M Z m

我们根据这样的结论可以在每一轮选取适当的 Gm G m 使得 Zm Z m 最小,从而使训练误差下降最快。 Zm使Zm 注 意 , 这 里 是 只 对 每 一 轮 的 Z m 使 其 最 小 化 , 不 是 对 Z m 的 乘 积 最 小 化

对于二类分类的AdaBoost的训练误差界为:
由于 Zm=i=1NwmieαmyiGm(xi)=yi=Gm(xi)wmieαm+yiGm(xi)wmieαm Z m = ∑ i = 1 N w m i e − α m y i G m ( x i ) = ∑ y i = G m ( x i ) w m i e − α m + ∑ y i ≠ G m ( x i ) w m i e α m
yi=Gm(xi)wmi=1em ∑ y i = G m ( x i ) w m i = 1 − e m
yiGm(xi)wmi=em ∑ y i ≠ G m ( x i ) w m i = e m
eαm=e12ln1emem=em1em e − α m = e − 1 2 l n 1 − e m e m = e m 1 − e m
eαm=e12ln1emem=1emem e α m = e 1 2 l n 1 − e m e m = 1 − e m e m
所以 Zm=2em(1em) Z m = 2 e m ( 1 − e m ) ,令 γm=12em γ m = 1 2 − e m ,则 Zm=14γ2m Z m = 1 − 4 γ m 2
m=1MZm=m=1M2em(1em)=m=1M14γ2me2m=1Mγ2m 因 此 ∏ m = 1 M Z m = ∏ m = 1 M 2 e m ( 1 − e m ) = ∏ m = 1 M 1 − 4 γ m 2 ≤ e − 2 ∑ m = 1 M γ m 2
e2m=1Mγ2mex1xx=0: 此 处 的 e − 2 ∑ m = 1 M γ m 2 是 通 过 e x 和 1 − x 在 点 x = 0 的 泰 勒 展 开 式 推 出 的 , 推 导 如 下 :
exx=0 e x 在 x = 0 处 泰 勒 展 开 :
     ex=1+x+12x2+o(x2) e x = 1 + x + 1 2 x 2 + o ( x 2 )
     e2γ2m=12γ2m+12(2γ2m)2=12γ2m+2γ4m e − 2 γ m 2 = 1 − 2 γ m 2 + 1 2 ( − 2 γ m 2 ) 2 = 1 − 2 γ m 2 + 2 γ m 4
1xx=0 1 − x 在 x = 0 处 泰 勒 展 开 :
     1x=112x18x2+o(x2) 1 − x = 1 − 1 2 x − 1 8 x 2 + o ( x 2 )
     14γ2m=1124γ2m18(4γ2m)2=12γ2m2γ4m 1 − 4 γ m 2 = 1 − 1 2 4 γ m 2 − 1 8 ( 4 γ m 2 ) 2 = 1 − 2 γ m 2 − 2 γ m 4  
14γ2me2γ2m 因 此 1 − 4 γ m 2 ≤ e − 2 γ m 2   
γ>0mγmγ1Ni=1NI(G(xi)yi)e2Mγ2 如 果 存 在 γ > 0 , 对 所 有 m 有 γ m ≥ γ , 则 1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) ≤ e − 2 M γ 2
AdaBoost 在 此 条 件 下 , 我 们 可 以 发 现 A d a B o o s t 的 训 练 误 差 是 以 指 数 速 率 下 降 的
     
下一篇会讨论前向分步算法和提升树,其实感觉前向分步算法加基函数线性组合就是一个框架,而AdaBoost算法和提升树都是利用这个框架来实现的。它们的不同点大多在于损失函数,而对于难以优化的损失函数我们会用梯度提升(最速下降的近似方法)来求解,这也就是梯度提升树的由来。

参考文献:《统计学习方法》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值