【ML】AdaBoost(Boosting集成)

  Boosting算法是将“弱学习算法“提升为“强学习算法”的过程,提升方法主要思想是:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好,“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。

AdaBoost核心问题

  • 在每一轮如何改变训练数据的权值或概率分布;
    • AdaBoost:提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值。
  • 如何将弱分类器组合成一个强分类器。
    • AdaBoost:加权多数表决,具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

AdaBoost算法流程

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} T={(x1,y1),(x2,y2),...,(xn,yn)},其中实例 x i ∈ X ⊆ R n x_i\in\mathcal{X}\subseteq\mathbb{R}^n xiXRn,标记 y i ∈ Y = { − 1 , 1 } y_i\in\mathcal{Y}=\{-1,1\} yiY={1,1} X \mathcal{X} X是实例空间, Y \mathcal{Y} Y是标记集合;若学习算法。
输出:最终分类器 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},...,w_{1i},...,w_{1n}),\quad w_{1i}=\frac{1}{n},\quad i=1,2,...,n D1=(w11,...,w1i,...,w1n),w1i=n1,i=1,2,...,n

假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同,这一假设保证第1步能够在原始数据上学习基分类器 G 1 ( x ) G_1(x) G1(x)

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

a. 使用具有权值分布 D m D_m Dm的训练数据集学习,得到使分类误差率最小的基分类器
G m ( x ) : X → { − 1 , 1 } G_m(x): \mathcal{X}\rightarrow \{-1,1\} Gm(x):X{1,1}

b. 计算 G m ( x ) G_m(x) Gm(x)在训练数据集上的分类误差率
e m = P ( G m ( x i ) ≠ y i ) = ∑ G m ( x i ) ≠ y i w m i = ∑ i = 1 N w m i I { G m ( x i ) ≠ y i } e_m=P(G_m(x_i)\neq y_i)=\sum_{G_m(x_i)\neq y_i}w_{mi}=\sum_{i=1}^Nw_{mi}I\{G_m(x_i)\neq y_i\} em=P(Gm(xi)=yi)=Gm(xi)=yiwmi=i=1NwmiI{Gm(xi)=yi}

G m ( x ) G_m(x) Gm(x)在加权的训练数据集上的分类误差率是被 G m ( x ) G_m(x) Gm(x)误分类样本的权值之和,由此可以看出数据权值分布 D m D_m Dm与基本分类器 G m ( x ) G_m(x) Gm(x)的分类误差率的关系。

c. 计算 G m ( x ) G_m(x) Gm(x)分类器的权重系数
α m = 1 2 log ⁡ e 1 − e m e m \alpha_m=\frac{1}{2}\log_e \frac{1-e_m}{e_m} αm=21logeem1em

e m ≤ 1 2 e_m\leq\frac{1}{2} em21时, α m ≥ 0 \alpha_m\geq 0 αm0,并且 α m \alpha_m αm随着 e m e_m em的减小而增大,所以,分类误差率越小的基本分类器在最终分类器中的作用越大。

d. 更新训练数据集的权值分布
D m + 1 = ( w m + 1 , 1 , . . . , w m + 1 , i , . . . , w m + 1 , n ) D_{m+1}=(w_{m+1,1},...,w_{m+1,i},...,w_{m+1,n}) Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,n)

w m + 1 , i = w m i Z m e − α m y i G m ( x i ) , i = 1 , 2 , . . . , n w_{m+1,i}=\frac{w_{mi}}{Z_m}e^{-\alpha_my_iG_m(x_i)},\quad i=1,2,...,n wm+1,i=ZmwmieαmyiGm(xi),i=1,2,...,n

这里, Z m Z_m Zm是规范化因子,
Z m = ∑ i = 1 n w m i e − α m y i G m ( x i ) Z_m=\sum_{i=1}^nw_{mi}e^{-\alpha_my_iG_m(x_i)} Zm=i=1nwmieαmyiGm(xi)

它使 D m + 1 D_{m+1} Dm+1成为一个概率分布。

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 w_{m+1,i}=\begin{cases} \frac{w_{mi}}{Z_m}e^{-\alpha_m},\quad G_m(x_i)=y_i\\ \quad\\ \frac{w_{mi}}{Z_m}e^{\alpha_m},\quad G_m(x_i)\neq y_i \end{cases} wm+1,i=Zmwmieαm,Gm(xi)=yiZmwmieαm,Gm(xi)=yi
被基本分类器 G m ( x ) G_m(x) Gm(x)误分类样本的权值得以扩大,而被正确分类样本的权值得以缩小,比较而言,误分类样本权值被放大 e 2 α m = e m 1 − e m e^{2\alpha_m}=\frac{e_m}{1-e_m} e2αm=1emem

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 i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) G(x)=sign(f(x))=sign(\sum_{m=1}^M\alpha_mG_m(x)) G(x)=sign(f(x))=sign(m=1MαmGm(x))

线性组合 f ( x ) f(x) f(x)实现 M M M个基本分类器的加权表决。系数 α m \alpha_m αm表示了基分类器 G m ( x ) G_m(x) Gm(x)的重要性,这里,所有 α m \alpha_m αm之和并不为1。 f ( x ) f(x) f(x)的符号决定实例 x x x的分类, f ( x ) f(x) f(x)的绝对值表示分类的确信度。


理解AdaBoost

前向分步算法

  加法模型是指由一系列弱分类器线性相加而成的强分类器。一般组合形式如下:
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是弱分类器学习到的最优参数, α m \alpha_m αm是弱分类器在强分类器中所占比重。

  在给定训练数据及损失函数 L ( y , f ( x ) ) L(y,f(x)) L(y,f(x))的条件下,学习加法模型 f ( x ) f(x) f(x)称为经验风险最小化即损失函数极小化问题:
min ⁡ β m , γ m ∑ i = 1 n L ( y i , ∑ m = 1 M β m b ( x ; γ m ) ) \min_{\beta_m,\gamma_m}\sum_{i=1}^nL\left(y_i,\sum_{m=1}^M\beta_mb(x;\gamma_m)\right) βm,γmmini=1nL(yi,m=1Mβmb(x;γm))

  通常这是一个复杂的优化问题。前向分步算法求解这一优化问题的思想是:从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数,简化优化的复杂度。具体地,每一步只需优化如下损失函数:
min ⁡ β , γ ∑ i = 1 n L ( y i , β b ( x i ; γ ) ) \min_{\beta,\gamma}\sum_{i=1}^n L\left(y_i,\beta b(x_i;\gamma)\right) β,γmini=1nL(yi,βb(xi;γ))

前向分步算法与AdaBoost

  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)
显然这是一个加法模型。下面证明AdaBoost算法等价于损失函数是指数损失函数的前向分布算法,
L ( y , f ( x ) ) = e x p [ − y f ( x ) ] L(y,f(x))=exp[-yf(x)] L(y,f(x))=exp[yf(x)]

  假设经过 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 ) f_{m-1}(x)=f_{m-2}(x)+\alpha_{m-1}G_{m-1}(x)=\alpha_1G_{1}(x)+...+\alpha_{m-1}G_{m-1}(x) fm1(x)=fm2(x)+αm1Gm1(x)=α1G1(x)+...+αm1Gm1(x)

在前向分布算法第 m m m次迭代,我们的目标是寻找 α m \alpha_m αm G m ( x ) G_m(x) Gm(x)使 f m ( x ) f_m(x) fm(x)在训练数据集上的指数损失最小,即
( α m , G m ( x ) ) = arg ⁡ min ⁡ α , G ∑ i = 1 n e x p [ − y i ( f m − 1 ( x i ) + α G ( x i ) ) ] (\alpha_m,G_m(x))=\arg\min_{\alpha,G}\sum_{i=1}^nexp[-y_i(f_{m-1}(x_i)+\alpha G(x_i))] (αm,Gm(x))=argα,Gmini=1nexp[yi(fm1(xi)+αG(xi))]

w ˉ m i = e x p [ − y i f m − 1 ( x i ) ] \bar{w}_{mi}=exp[-y_if_{m-1}(x_i)] wˉmi=exp[yifm1(xi)],这里, w ˉ m i \bar{w}_{mi} wˉmi不依赖与 α \alpha α G G G,因此与最小化无关,可写目标函数
( α m , G m ( x ) ) = arg ⁡ min ⁡ α , G ∑ i = 1 n w ˉ m i e x p [ − y i α G ( x i ) ] ( 1 ) (\alpha_m,G_m(x))=\arg\min_{\alpha,G}\sum_{i=1}^n\bar{w}_{mi}exp[-y_i\alpha G(x_i)]\quad\quad\quad(1) (αm,Gm(x))=argα,Gmini=1nwˉmiexp[yiαG(xi)](1)

w ˉ m i \bar{w}_{mi} wˉmi依赖于 f m − 1 ( x i ) f_{m-1}(x_i) fm1(xi),随着每一轮迭代发生改变。

∑ i = 1 n w ˉ m i e x p [ − y i α G ( x i ) ] = ∑ i = 1 n w ˉ m i [ e α I { G m ( x i ) ≠ y i } + e − α I { G m ( x i ) = y i } ] = ∑ i = 1 n w ˉ m i [ e α I { G m ( x i ) ≠ y i } + e − α ( 1 − I { G m ( x i ) ≠ y i } ) ] = e − α ∑ i = 1 n w ˉ m i + ( e α − e − α ) ∑ i = 1 n w ˉ m i I { G m ( x i ) ≠ y i } \begin{aligned} \sum_{i=1}^n\bar{w}_{mi}exp[-y_i\alpha G(x_i)]&=\sum_{i=1}^n\bar{w}_{mi}[e^\alpha I_{\{G_m(x_i)\neq y_i\}}+e^{-\alpha} I_{\{G_m(x_i)= y_i\}}]\\ &=\sum_{i=1}^n\bar{w}_{mi}[e^\alpha I_{\{G_m(x_i)\neq y_i\}}+e^{-\alpha} (1-I_{\{G_m(x_i)\neq y_i\}})]\\ &=e^{-\alpha}\sum_{i=1}^n\bar{w}_{mi}+(e^\alpha-e^{-\alpha})\sum_{i=1}^n\bar{w}_{mi}I_{\{G_m(x_i)\neq y_i\}} \end{aligned} i=1nwˉmiexp[yiαG(xi)]=i=1nwˉmi[eαI{Gm(xi)=yi}+eαI{Gm(xi)=yi}]=i=1nwˉmi[eαI{Gm(xi)=yi}+eα(1I{Gm(xi)=yi})]=eαi=1nwˉmi+(eαeα)i=1nwˉmiI{Gm(xi)=yi}

因此,对任意 α > 0 \alpha>0 α>0,使(1)式最小的 G ( x ) G(x) G(x)由下式得到,
G m ∗ ( x ) = arg ⁡ min ⁡ G ∑ i = 1 n w ˉ m i I { G m ( x i ) ≠ y i } G_m^*(x)=\arg\min_{G}\sum_{i=1}^n\bar{w}_{mi}I_{\{G_m(x_i)\neq y_i\}} Gm(x)=argGmini=1nwˉmiI{Gm(xi)=yi}

此分类器 G m ∗ ( x ) G_m^*(x) Gm(x)即为AdaBoost算法的基分类器 G m ( x ) G_m(x) Gm(x),它是使第 m m m轮加权训练数据分类误差率最小的基分类器。
  之后求 α \alpha α,带入 G m ∗ ( x ) G_m^*(x) Gm(x)
∑ i = 1 n w ˉ m i e x p [ − y i α G ( x i ) ] = ∑ y i = G m ( x i ) w ˉ m i e − α + ∑ y i ≠ G m ( x i ) w ˉ m i e α = ( ∑ i = 1 n w ˉ m i e − α − ∑ y i ≠ G m ( x i ) w ˉ m i e − α ) + ∑ y i ≠ G m ( x i ) w ˉ m i e α = ( e α − e − α ) ∑ i = 1 n w ˉ m i I { G m ( x i ) ≠ y i } + e − α ∑ i = 1 n w ˉ m i \begin{aligned} \sum_{i=1}^n\bar{w}_{mi}exp[-y_i\alpha G(x_i)]&=\sum_{y_i=G_m(x_i)}\bar{w}_{mi}e^{-\alpha}+\sum_{y_i\neq G_m(x_i)}\bar{w}_{mi}e^{\alpha}\\ &=(\sum_{i=1}^n\bar{w}_{mi}e^{-\alpha}-\sum_{y_i\neq G_m(x_i)}\bar{w}_{mi}e^{-\alpha})+\sum_{y_i\neq G_m(x_i)}\bar{w}_{mi}e^{\alpha}\\ &=(e^{\alpha}-e^{-\alpha})\sum_{i=1}^n\bar{w}_{mi}I_{\{G_m(x_i)\neq y_i\}}+e^{-\alpha}\sum_{i=1}^n\bar{w}_{mi} \end{aligned} i=1nwˉmiexp[yiαG(xi)]=yi=Gm(xi)wˉmieα+yi=Gm(xi)wˉmieα=(i=1nwˉmieαyi=Gm(xi)wˉmieα)+yi=Gm(xi)wˉmieα=(eαeα)i=1nwˉmiI{Gm(xi)=yi}+eαi=1nwˉmi

α \alpha α求导并使导数为0,
( e α + e − α ) ∑ i = 1 n w ˉ m i I { G m ( x i ) ≠ y i } = e − α ∑ i = 1 n w ˉ m i (e^{\alpha}+e^{-\alpha})\sum_{i=1}^n\bar{w}_{mi}I_{\{G_m(x_i)\neq y_i\}}=e^{-\alpha}\sum_{i=1}^n\bar{w}_{mi} (eα+eα)i=1nwˉmiI{Gm(xi)=yi}=eαi=1nwˉmi


e m = ∑ i = 1 n w ˉ m i ∑ i = 1 n w ˉ m i I { G m ( x i ) ≠ y i } = ∑ i = 1 n w m i I { G m ( x i ) ≠ y i } e_m=\sum_{i=1}^n\frac{\bar{w}_{mi}}{\sum_{i=1}^n\bar{w}_{mi}}I_{\{G_m(x_i)\neq y_i\}}=\sum_{i=1}^nw_{mi}I_{\{G_m(x_i)\neq y_i\}} em=i=1ni=1nwˉmiwˉmiI{Gm(xi)=yi}=i=1nwmiI{Gm(xi)=yi}

w ˉ m i = e x p [ − y i f m − 1 ( x i ) ] = e x p [ − y i ( f m − 2 ( x ) + α m − 1 G m − 1 ( x ) ) ] = w ˉ m − 1 , i e x p [ − y i α m − 1 G m − 1 ( x ) ) ] \begin{aligned} \bar{w}_{mi}&=exp[-y_if_{m-1}(x_i)]=exp[-y_i(f_{m-2}(x)+\alpha_{m-1}G_{m-1}(x))]\\ &=\bar{w}_{m-1,i}exp[-y_i\alpha_{m-1}G_{m-1}(x))] \end{aligned} wˉmi=exp[yifm1(xi)]=exp[yi(fm2(x)+αm1Gm1(x))]=wˉm1,iexp[yiαm1Gm1(x))]

w m , i = w m − 1 , i e x p [ − α m − 1 y i G m − 1 ( x i ) ] ∑ i = 1 n w m − 1 , i e x p [ − α m − 1 y i G m − 1 ( x i ) ] , i = 1 , 2 , . . . , n w_{m,i}=\frac{w_{m-1,i}exp[-\alpha_{m-1}y_iG_{m-1}(x_i)]}{\sum_{i=1}^nw_{m-1,i}exp[-\alpha_{m-1}y_iG_{m-1}(x_i)]},\quad i=1,2,...,n wm,i=i=1nwm1,iexp[αm1yiGm1(xi)]wm1,iexp[αm1yiGm1(xi)],i=1,2,...,n

两边同除 ∑ i = 1 n w ˉ m i \sum_{i=1}^n\bar{w}_{mi} i=1nwˉmi
( e α + e − α ) e m = e − α (e^{\alpha}+e^{-\alpha})e_m=e^{-\alpha} (eα+eα)em=eα

则,
α m ∗ = 1 2 log ⁡ 1 − e m e m \alpha_m^*=\frac{1}{2}\log \frac{1-e_m}{e_m} αm=21logem1em


统计学习方法—李航

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值