【ML】AdaBoost(1)

boost基本思路

Kearns和Valiant提出了强可学习(strongly learnable)弱可学习(weakly learnable)的概念,并指出在概率近似正确(probably approximately correct, PAC)学习框架中,一个概念,如果存在一个多项式学习算法能够学习且正确率很高,那么这个概念是强可学习的;一个概念如果学习的正确率略高于随机猜测,那么这个概念是弱可学习的.

Schapire 证明强可学习与弱可学习是等价的,即在PAC框架下,强可学习的充要条件是弱可学习的.

这样就形成了AdaBoost算法的基本思路,找到训练样本集的弱分类器,反复学习得到一系列弱分类器,然后对这些弱分类器进行组合,构成一个强分类器. 很多提升方法都是改变训练数据的概率分布(训练样本的权重分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器.

AdaBoost算法

给定一个二分类训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T=\{(x_1, y_1), (x_2, y_2), \dots, (x_N, y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
样本 x i ∈ X ⊂ R n x_i\in\mathcal{X}\subset\mathbb{R}^n xiXRn, 标记 y i ∈ Y = { − 1 , + 1 } y_i\in\mathcal{Y}=\{-1, +1\} yiY={1,+1}.
弱学习算法:输出分类器 G ( x ) G(x) G(x)
(1).初始化训练数据的权值分布
D 1 = ( w 11 , … , w 1 i , … , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , … , N D_1=(w_{11}, \dots, w_{1i}, \dots, w_{1N}), w_{1i}=\frac{1}{N}, i=1,2, \dots, N D1=(w11,,w1i,,w1N),w1i=N1,i=1,2,,N
(2).对于 m = 1 , 2 , … , M m=1,2, \dots, M m=1,2,,M
(a).使用具有权值分布 D m D_m Dm的训练数据集学习,得到基本分类器
G m ( x ) : X → { − 1 , + 1 } G_m(x):\mathcal{X}\to\{-1, +1\} Gm(x):X{1,+1}
(b).计算 G m ( x ) G_m(x) Gm(x)在训练集上的分类误差率
e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) e_m=\sum_{i=1}^NP(G_m(x_i)\neq y_i)=\sum_{i=1}^Nw_{mi}I(G_m(x_i)\neq y_i) em=i=1NP(Gm(xi)=yi)=i=1NwmiI(Gm(xi)=yi)
©.计算 G m ( x ) G_m(x) Gm(x)的系数
α m = 1 2 log ⁡ 1 − e m e m \alpha_m=\frac{1}{2}\log\frac{1-e_m}{e_m} αm=21logem1em
(d).更新训练数据集的权值分布
D m + 1 = ( w m + 1 , 1 , … , w m + 1 , i , … , w m + 1 , N ) w m + 1 , i = w m i Z m exp ⁡ ( − α m y i G m ( x i ) ) D_{m+1}=(w_{m+1, 1}, \dots, w_{m+1, i}, \dots, w_{m+1, N})\\ w_{m+1, i}=\frac{w_{mi}}{Z_m}\exp(-\alpha_my_iG_m(x_i)) Dm+1=(wm+1,1,,wm+1,i,,wm+1,N)wm+1,i=Zmwmiexp(αmyiGm(xi))
其中 Z m Z_m Zm是规范化因子
Z m = ∑ i = 1 N w m i exp ⁡ ( − α m y i G m ( x i ) ) Z_m=\sum_{i=1}^Nw_{mi}\exp(-\alpha_my_iG_m(x_i)) Zm=i=1Nwmiexp(αmyiGm(xi))
使得 D m + 1 D_{m+1} Dm+1称为pdf.
(3).构建基本分类器线性组合
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^M\alpha_mG_m(x) f(x)=m=1MαmGm(x)
进而得到最终分类器
G ( x ) = s g n ( f ( x ) ) = s g n ( ∑ m = 1 M α m G m ( x ) ) G(x)=sgn(f(x))=sgn(\sum_{m=1}^M\alpha_mG_m(x)) G(x)=sgn(f(x))=sgn(m=1MαmGm(x))

训练误差分析

AdaBoost的最基本性质是可以在学习过程中不断减少训练误差,即在训练数据集上的分类误差率,有以下定理成立
定理(AdaBoost的训练误差界):AdaBoost算法最终分类器的训练误差界为
1 N = ∑ i = 1 N I ( G ( x i ) ≠ y i ) ≤ 1 N ∑ i exp ⁡ ( − y i f ( x i ) ) = ∏ Z m \frac{1}{N}=\sum_{i=1}^NI(G(x_i)\neq y_i)\leq \frac{1}{N}\sum_i\exp(-y_if(x_i))=\prod Z_m N1=i=1NI(G(xi)=yi)N1iexp(yif(xi))=Zm
证明
G ( x i ) ≠ y i G(x_i)\neq y_i G(xi)=yi时, y i f ( x i ) < 0 , exp ⁡ ( − y i f ( x i ) ) ≥ 1 y_if(x_i)<0, \exp(-y_if(x_i))\geq 1 yif(xi)<0exp(yif(xi))1,可以直接推导出不等式的前半部分
根据定义
w m i exp ⁡ ( − α m y i G m ( x i ) ) = Z m w m 1 , i w_{mi}\exp(-\alpha_my_iG_m(x_i))=Z_mw_{m_1, i} wmiexp(αmyiGm(xi))=Zmwm1,i
推导
1 N ∑ i exp ⁡ ( − y i f ( x i ) ) = 1 N ∑ exp ⁡ ( − ∑ m = 1 M α m y i G m ( x i ) ) = ∑ i w 1 i ∏ m = 1 M exp ⁡ ( − α m y i G m ( x i ) ) = Z 1 ∑ i w 2 i ∏ m = 2 M exp ⁡ ( − α m y i G m ( x i ) ) = Z 1 Z 2 ∑ i w 3 i ∏ m = 3 M exp ⁡ ( − α m y i G m ( x i ) ) = … = Z 1 Z 2 … Z M − 1 ∑ i w M i exp ⁡ ( − α M y i G M ( x i ) ) = ∏ m = 1 M Z m \begin{aligned} \frac{1}{N}\sum_i\exp(-y_if(x_i))&=\frac{1}{N}\sum\exp\bigg(-\sum_{m=1}^M\alpha_my_iG_m(x_i)\bigg)\\ &=\sum_iw_{1i}\prod_{m=1}^M\exp(-\alpha_my_iG_m(x_i))\\ &=Z_1\sum_iw_{2i}\prod_{m=2}^M\exp(-\alpha_my_iG_m(x_i))\\ &=Z_1Z_2\sum_iw_{3i}\prod_{m=3}^M\exp(-\alpha_my_iG_m(x_i))\\ &=\dots\\ &=Z_1Z_2\dots Z_{M-1}\sum_iw_{Mi}\exp(-\alpha_My_iG_M(x_i))\\ &=\prod_{m=1}^M Z_m \end{aligned} N1iexp(yif(xi))=N1exp(m=1MαmyiGm(xi))=iw1im=1Mexp(αmyiGm(xi))=Z1iw2im=2Mexp(αmyiGm(xi))=Z1Z2iw3im=3Mexp(αmyiGm(xi))==Z1Z2ZM1iwMiexp(αMyiGM(xi))=m=1MZm
即在每一轮训练中选择合适 G m G_m Gm使得 Z m Z_m Zm值最小,使得训练误差下降最快.
定理(二分类问题AdaBoost的训练误差界)
∏ m = 1 M Z m = ∏ m = 1 M [ 2 e m ( 1 − e m ) ] = ∏ m = 1 M 1 − 4 γ m 2 ≤ exp ⁡ ( − 2 ∑ m = 1 M γ m 2 ) \begin{aligned} \prod_{m=1}^MZ_m&=\prod_{m=1}^M[2\sqrt{e_m(1-e_m)}]\\ &=\prod_{m=1}^M\sqrt{1-4\gamma_m^2}\\ &\leq \exp\bigg(-2\sum_{m=1}^M\gamma_m^2\bigg) \end{aligned} m=1MZm=m=1M[2em(1em) ]=m=1M14γm2 exp(2m=1Mγm2)
其中 γ m = 1 2 − e m \gamma_m=\frac{1}{2}-e_m γm=21em
证明
根据 Z m Z_m Zm的定义
Z m = ∑ i = 1 N w m i exp ⁡ ( − α 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 = 2 e m ( 1 − e m ) = 1 − 4 γ m 2 \begin{aligned} Z_m&=\sum_{i=1}^Nw_{mi}\exp(-\alpha_my_iG_m(x_i))\\ &=\sum_{y_i=G_m(x_i)}w_{mi}e^{-\alpha_m}+\sum_{y_i\neq G_m(x_i)}w_{mi}e^{\alpha_m}\\ &=2\sqrt{e_m(1-e_m)}\\ &=\sqrt{1-4\gamma_m^2} \end{aligned} Zm=i=1Nwmiexp(αmyiGm(xi))=yi=Gm(xi)wmieαm+yi=Gm(xi)wmieαm=2em(1em) =14γm2
e x e^x ex 1 − x \sqrt{1-x} 1x x = 0 x=0 x=0处Taylor展开,可以推出不等式
1 − 4 γ m 2 ≤ exp ⁡ ( − 2 γ m 2 ) \sqrt{1-4\gamma_m^2}\leq \exp(-2\gamma_m^2) 14γm2 exp(2γm2)
推论:如果存在 γ > 0 \gamma>0 γ>0,对所有 m m m γ m ≥ γ \gamma_m\geq \gamma γmγ
1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) ≤ exp ⁡ ( − 2 M γ 2 ) \frac{1}{N}\sum_{i=1}^NI(G(x_i)\neq y_i)\leq \exp(-2M\gamma^2) N1i=1NI(G(xi)=yi)exp(2Mγ2)
推论表明,AdaBoost的训练误差以指数速率进行下降,并且AdaBoost不需要知道下界 γ \gamma γ,与早期的提升方法不同,AdaBoost具有适应性,它可以适应弱分类器各自的训练误差率.

AdaBoost算法解释

可以认为AdaBoost算法是加法模型,损失函数为指数函数,学习算法为前向分步算法的二分类学习方法.

前向分步算法

考虑加法模型(additive model)
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=\sum_{m=1}^M\beta_mb(x;\gamma_m) f(x)=m=1Mβmb(x;γm)
其中, b ( x ; γ m ) b(x;\gamma_m) b(x;γm)为基函数, γ m \gamma_m γm为基函数的系数.
在给定训练数据以及损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x))的条件下,学习加法模型 f ( x ) f(x) f(x)称为ERM最小化问题.
min ⁡ β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) \min_{\beta_m, \gamma_m}\sum_{i=1}^NL\bigg(y_i, \sum_{m=1}^M\beta_mb(x_i; \gamma_m)\bigg) βm,γmmini=1NL(yi,m=1Mβmb(xi;γm))
这个优化问题比较复杂,前向分步算法(forward stagewise algorithm)求解思路为每步只学习一个基函数及其系数,逐步逼近优化目标函数,可以简化复杂度,算法中每步只优化如下损失函数
min ⁡ β , γ ∑ i = 1 N L ( y i , β b ( x i ; γ ) ) \min_{\beta, \gamma}\sum_{i=1}^NL(y_i, \beta b(x_i;\gamma)) β,γmini=1NL(yi,βb(xi;γ))
对于二分类问题,前向分步算法如下
算法
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } ; x i ∈ X ⊂ R n , y i ∈ Y = { − 1 , + 1 } T=\{(x_1, y_1), (x_2, y_2), \dots, (x_N, y_N)\}; x_i\in\mathcal{X}\subset\mathbb{R}^n, y_i\in\mathcal{Y}=\{-1, +1\} T={(x1,y1),(x2,y2),,(xN,yN)};xiXRn,yiY={1,+1}.
输出:加法模型 f ( x ) f(x) f(x)
(1). 初始化 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0
(2).对于 m = 1 , 2 , … , M m=1, 2, \dots, M m=1,2,,M
(a).极小化损失函数
( β m , γ m ) = arg min ⁡ β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; γ ) ) (\beta_m,\gamma_m)=\argmin_{\beta, \gamma}\sum_{i=1}^NL(y_i, f_{m-1}(x_i)+\beta b(x_i; \gamma)) (βm,γm)=β,γargmini=1NL(yi,fm1(xi)+βb(xi;γ))
得到参数 β m , γ m \beta_m, \gamma_m βm,γm
(b).更新
f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_m(x)=f_{m-1}(x)+\beta_mb(x; \gamma_m) fm(x)=fm1(x)+βmb(x;γm)
(3).得到加法模型
f ( x ) = f M ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=f_M(x)=\sum_{m=1}^M\beta_mb(x; \gamma_m) f(x)=fM(x)=m=1Mβmb(x;γm)
定理
AdaBoost算法是前向分步算法特例,模型是由基本分类器组成的加法模型,损失函数为指数函数.
证明
前向分步算法学习的加法模型,当基函数为基本分类器,加法模型等价于AdaBoost的最终分类器
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^M\alpha_mG_m(x) f(x)=m=1MαmGm(x)
需要证明分布算法损失函数为指数损失函数(exponential loss function)
L ( y , f ( x ) ) = exp ⁡ [ − y f ( x ) ] L(y, f(x))=\exp[-yf(x)] L(y,f(x))=exp[yf(x)]
时,学习操作等价于AdaBoost.
设经过 m − 1 m-1 m1轮迭代前向分步算法已经得到 f m − 1 ( x ) f_{m-1}(x) fm1(x)
f m − 1 ( x ) = f m − 2 ( x ) + α m − 1 G m − 1 ( x ) = α 1 G 1 ( x ) + ⋯ + α m − 1 G m − 1 ( x ) \begin{aligned} f_{m-1}(x)&=f_{m-2}(x)+\alpha_{m-1}G_{m-1}(x)\\ &=\alpha_1G_1(x)+\dots+\alpha_{m-1}G_{m-1}(x) \end{aligned} fm1(x)=fm2(x)+αm1Gm1(x)=α1G1(x)++αm1Gm1(x)
在第 m m m轮迭代得到 α m , G m ( x ) \alpha_m, G_m(x) αm,Gm(x) f m ( x ) f_m(x) fm(x)
f m ( x ) = f m − 1 ( x ) + α m G m ( x ) f_m(x)=f_{m-1}(x)+\alpha_mG_m(x) fm(x)=fm1(x)+αmGm(x)
目标是使前向分步算法得到的 α m \alpha_m αm G m ( x ) G_m(x) Gm(x)使得 f m ( x ) f_m(x) fm(x)在训练数据集 T T T上的指数损失最小,即
( α m , G m ( x ) ) = arg min ⁡ α , G ∑ i = 1 N exp ⁡ [ − y i ( f m − 1 ( x i ) + α G ( x i ) ) ] (\alpha_m, G_m(x))=\argmin_{\alpha, G}\sum_{i=1}^N\exp[-y_i(f_{m-1}(x_i)+\alpha G(x_i))] (αm,Gm(x))=α,Gargmini=1Nexp[yi(fm1(xi)+αG(xi))]
等价于
( α m , G m ( x ) ) = arg min ⁡ α , G ∑ i = 1 N w ˉ m i exp ⁡ [ − y i α G ( x i ) ) ] (\alpha_m, G_m(x))=\argmin_{\alpha, G}\sum_{i=1}^N\bar{w}_{mi}\exp[-y_i\alpha G(x_i))] (αm,Gm(x))=α,Gargmini=1Nwˉmiexp[yiαG(xi))]
其中, w ˉ m i = exp ⁡ [ − y i f m − 1 ( x i ) ] \bar{w}_{mi}=\exp[-y_if_{m-1}(x_i)] wˉmi=exp[yifm1(xi)]既不依赖 α \alpha α也不依赖 G G G,与最小化无关,但是和 f m − 1 ( x ) f_{m-1}(x) fm1(x)有关,随着每一轮迭代而改变.
要求达到最小的 α m ∗ \alpha_m^* αm G m ∗ G_m^* Gm,最小的 G ( x ) G(x) G(x)
G m ∗ ( x ) = arg min ⁡ G ∑ i = 1 N w ˉ m i I ( y i ≠ G ( x i ) ) G^*_m(x)=\argmin_G\sum_{i=1}^N\bar{w}_{mi}I(y_i\neq G(x_i)) Gm(x)=Gargmini=1NwˉmiI(yi=G(xi))
此时, G m ∗ G_m^* Gm为AdaBoost的基本分类器 G m ( x ) G_m(x) Gm(x),是使第 m m m轮加权训练数据分类误差最小的基本分类器.
然后求 α m ∗ \alpha_m^* αm,得到
α m ∗ = 1 2 log ⁡ 1 − e m e m \alpha_m^*=\frac{1}{2}\log\frac{1-e_m}{e_m} αm=21logem1em
每一轮样本权值更新
f m ( x ) = f m − 1 ( x ) + α m G m ( x ) f_m(x)=f_{m-1}(x)+\alpha_mG_m(x) fm(x)=fm1(x)+αmGm(x)
以及 w ˉ m i = exp ⁡ [ − y i f m − 1 ( x i ) ] \bar{w}_{mi}=\exp[-y_if_{m-1}(x_i)] wˉmi=exp[yifm1(xi)]
w ˉ m + 1 , i = w ˉ m , i exp ⁡ [ − y i α m G m ( x ) ] \bar{w}_{m+1, i}=\bar{w}_{m, i}\exp[-y_i\alpha_mG_m(x)] wˉm+1,i=wˉm,iexp[yiαmGm(x)]

参考资料

统计学习方法 清华大学出版社 李航

©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付 99.00元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值