AdaBoost

1. 提升方法的基本思路

        提升方法基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
        对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类器(强分类器)容易得多。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称基本分类器),然后组合这些弱分类器,构成一个强分类器。大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。
        这样,对提升方法来说,有两个问题需要回答:一是在每一轮如何改变训练数据权值或概率分布;而是如何将弱分类器组合成一个强分类器。关于一个问题,AdaBoost的做法是,提高那些被前一轮分类器错误分类样本的权值,而降低那些被正确分类样本的权值。这样一来,那些没有得到正确分类的数据,由于其权值的增大而受到后一轮的弱分类器的更大关注。于是,分类问题被一系列的弱分类器“分而治之”。置于第二个问题,即弱分类器的组合,AdaBoost采取加权多数表决的方法,具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用;减小分类误差率大额弱分类器的权值,使其在表决中起较小的作用。
        AdaBoost的巧妙之处就在于它将这些想法自然且有效地实现在一种算法里。

2. AdaBoost算法

Input:假设给定一个二分类的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)},其中 x i ∈ R n , y i ∈ { + 1 , − 1 } x_i \in \R^n,y_i\in \{+1,-1\} xiRnyi{+1,1}

Output:最终分类器 G ( x ) G(x) G(x)

Procedure
    (1)初始化训练数据的权值分布 D 1 = ( w 11 , w 12 , ⋯   , w 1 n ) , w 1 i = 1 N , i = 1 , 2 , ⋯   , N D_1=(w_{11},w_{12},\cdots,w_{1n}),\quad w_{1i}=\frac{1}{N},\quad i=1,2,\cdots,N D1=(w11,w12,,w1n),w1i=N1,i=1,2,,N    (2)for m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,Mrepeat

            (a)从具有权值分布 D m D_m Dm 的训练数据集中采样 N N N 个样本学习,得到基本分类器 G m ( x ) : x → { + 1 , − 1 } G_m(x):x\rightarrow \{+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 ] = ∑ i = 1 G m ( x i ) ≠ y i N w m i \begin{aligned}e_m=\displaystyle\sum_{i=1}^{N}P(G_m(x_i)\ne y_i)=\displaystyle\sum_{i=1}^{N}w_{mi}I\bigg[G_m(x_i)\ne y_i\bigg]=\large\displaystyle\sum_{\large i=1\atop G_m(x_i)\ne y_i}^{N}w_{mi}\end{aligned} em=i=1NP(Gm(xi)=yi)=i=1NwmiI[Gm(xi)=yi]=Gm(xi)=yii=1Nwmi            (c)计算加权错误率,即 G m ( x ) G_m(x) Gm(x) 的系数 α m = 1 2 ln ⁡ 1 − e m e m \alpha_m = \frac{1}{2} \ln\frac{1-e_m}{e_m} αm=21lnem1em            (d)更新训练数据集的权值分布 D m + 1 = ( w m + 1 , 1 , w m + 1 , 2 , ⋯   , w m + 1 , N ) w m + 1 , i = w m i Z m e − α m y i G m ( x i ) i = 1 , 2 , ⋯   , N \begin{aligned}&D_{m+1}=(w_{m+1,1},w_{m+1,2},\cdots,w_{m+1,N})\\\\w_{m+1,i}&=\displaystyle\frac{w_{mi}}{Z_m}\Large{e ^{-\alpha_m y_iG_m(x_i)}}\quad \normalsize i=1,2,\cdots,N \end{aligned} wm+1,iDm+1=(wm+1,1,wm+1,2,,wm+1,N)=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=\displaystyle\sum_{i=1}^{N}{w_{mi}}\Large{e ^{-\alpha_m y_iG_m(x_i)}} Zm=i=1NwmieαmyiGm(xi)    (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 ) ) \begin{aligned}G(x)=sign\big(f(x)\big)=sign\bigg(\sum_{m=1}^{M}\alpha_mG_m(x)\bigg)\end{aligned} G(x)=sign(f(x))=sign(m=1MαmGm(x))

  • 给训练数据集加权值是因为每次训练的 N N N 个数据都是有放回的抽取数据样本,允许重复抽取
  • e m < 1 2 \large e_m\lt\displaystyle\frac{1}{2} em<21 ,因为你要是误分率 80 % 80\% 80%的话和误分率 20 % 20\% 20% 没区别,取反就行了,因此, α m ≥ 0 \large\alpha_m\ge0 αm0

3. AdaBoost训练误差的有界性

AdaBoost算法最终分类器的训练误差定义为 E = 1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) E=\displaystyle\frac{1}{N}\sum_{i=1}^{N}I\Big(G(x_i)\ne y_i\Big) E=N1i=1NI(G(xi)=yi)

G ( x i ) ≠ y i G(x_i)\ne y_i G(xi)=yi 时, y i f ( x i ) < 0 y_i f(x_i)\lt0 yif(xi)<0,故 e − y i f ( x i ) ≥ 1 \displaystyle \large e^{\large-y_if(x_i)}\ge1 eyif(xi)1,即 E ≤ 1 N ∑ i = 1 N e − y i f ( x i ) = 1 N ∑ i = 1 N e − y i ∑ m = 1 M α m G m ( x i ) = ∑ i = 1 N w 1 i ∏ m = 1 M e − α m y i G m ( x i ) \begin{aligned}\large E\le\frac{1}{N}\sum_{i=1}^{N} e^{\large-y_if(x_i)}=\frac{1}{N}\sum_{i=1}^{N} e^{\large -y_i\normalsize\displaystyle\sum_{m=1}^{M}\alpha_mG_m(x_i)} =\sum_{i=1}^{N}w_{1i}\prod_{m=1}^{M}\large e^{-\alpha_m y_iG_m(x_i)} \end{aligned} EN1i=1Neyif(xi)=N1i=1Neyim=1MαmGm(xi)=i=1Nw1im=1MeαmyiGm(xi)

这里是代入 f ( x i ) \large f(x_i) f(xi)的公式,以及指数计算的性质将累加化成累乘,另外 w 1 i = 1 N \large w_{1i}=\displaystyle\frac{1}{N} w1i=N1

从算法过程可知 w m i e − α m y i G m ( x i ) = Z m w m + 1 , i , , Z m = ∑ i = 1 N w m i e − α m y i G m ( x i ) \displaystyle{w_{mi}}\Large{e ^{-\alpha_m y_iG_m(x_i)}}\normalsize=Z_m w_{m+1,i},,Z_m=\displaystyle\sum_{i=1}^{N}{w_{mi}}\Large{e ^{-\alpha_m y_iG_m(x_i)}} wmieαmyiGm(xi)=Zmwm+1,i,Zm=i=1NwmieαmyiGm(xi),因此 ∑ i = 1 N w 1 i ∏ m = 1 M e − α m y i G m ( x i ) = ∑ i = 1 N [ w 1 i e − α m y 1 G m ( x 1 ) ] ∏ m = 2 M e − α m y i G m ( x i ) = Z 1 ∑ i = 1 N w 2 , i ∏ m = 2 M e − α m y i G m ( x i ) = ⋯ = 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 \begin{aligned}\large \sum_{i=1}^{N}w_{1i}\prod_{m=1}^{M}\large e^{\large-\alpha_m y_iG_m(x_i)} =&\sum_{i=1}^{N}\Bigg[w_{1i}e^{\large-\alpha_m y_1G_m(x_1)}\Bigg]\prod_{m=2}^{M}\large e^{\large-\alpha_m y_iG_m(x_i)} \\ \\ =& Z_1\sum_{i=1}^{N}w_{2,i}\prod_{m=2}^{M}\large e^{\large-\alpha_m y_iG_m(x_i)}\\\\ =&\cdots\\\\ =&Z_1Z_2\cdots Z_{M-1}\sum_{i=1}^{N}w_{M,i}\large e^{\large-\alpha_M y_iG_M(x_i)}\\\\ =&\prod_{m=1}^{M}Z_m \end{aligned} i=1Nw1im=1MeαmyiGm(xi)=====i=1N[w1ieαmy1Gm(x1)]m=2MeαmyiGm(xi)Z1i=1Nw2,im=2MeαmyiGm(xi)Z1Z2ZM1i=1NwM,ieαMyiGM(xi)m=1MZm
至此,我们得到 E ≤ ∏ m = 1 M Z m \displaystyle E\le\prod_{m=1}^{M}Z_m Em=1MZm,所以,证明训练误差有界转化为证明 Z m Z_m Zm 有界,首先看一下, Z m Z_m Zm表达式详细写出来是什么: Z m = ∑ i = 1 N w m i e − α m y i G m ( x i ) = ∑ i = 1 y i = G m ( x i ) N w m i e − α m + ∑ i = 1 y i ≠ G m ( x i ) N w m i e α m \large Z_m=\displaystyle\sum_{i=1}^{N}{w_{mi}}\large{e ^{\large-\alpha_m y_iG_m(x_i)}}=\sum^N_{\large i=1\atop y_i=G_m(x_i)}w_{mi}e^{-\alpha_m}+\sum^N_{\large i=1\atop y_i\ne G_m(x_i)}w_{mi}e^{\alpha_m} Zm=i=1NwmieαmyiGm(xi)=yi=Gm(xi)i=1Nwmieαm+yi=Gm(xi)i=1Nwmieαm又已知 ∑ i = 1 N w m i = 1 , e m = ∑ i = 1 G m ( x i ) ≠ y i N w m i , e α m = 1 − e m e m \large\displaystyle \sum_{i=1}^{N}w_{mi}=1, e_m=\large\displaystyle\sum_{\large i=1\atop G_m(x_i)\ne y_i}^{N}w_{mi},e^{\alpha_m}=\sqrt{\frac{1-e_m}{e_m}} i=1Nwmi=1em=Gm(xi)=yii=1Nwmieαm=em1em ,所以可知
Z m = ( 1 − e m ) e − α m + e m e α m = 2 e m ( 1 − e m ) ≤ e m + 1 − e m = 1 \large Z_m=(1-e_m)e^{-\alpha_m}+e_m e^{\alpha_m}=2\sqrt{e_m(1-e_m)}\le e_m+1-e_m=1 Zm=(1em)eαm+emeαm=2em(1em) em+1em=1

基本不等式: a b ≤ a + b 2 \large\displaystyle \sqrt{ab}\le \frac{a+b}{2} ab 2a+b

综上所述, E ≤ ∏ m = 1 M Z m ≤ 1 E\le \displaystyle\prod_{m=1}^M Z_m\le 1 Em=1MZm1,故AdaBoost算法训练误差有界。

这里另外再提一句,随着 M M M 的增大, E E E 的值会快速下降。这是因为 e m ∈ ( 0 , 1 2 ) \displaystyle e_m\in(0,\frac{1}{2}) em(0,21) Z m 实 际 上 是 小 于 1 , 取 不 到 等 号 Z_m实际上是小于1,取不到等号 Zm1,故 M M M 每增加 1 1 1 E E E 都要乘以一个小于 1 1 1 的数,当然会不断缩小了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值