AdaBoost算法详解

本文深入探讨了AdaBoost算法的详细步骤,包括数据权重更新、损失函数的合理性以及优化过程中的贪心算法。通过指数损失函数,展示了如何最小化风险以得到理想的分类器。同时,解释了为何在训练过程中,错误分类的样本权重会增加,以促进后续基分类器对困难样本的学习。最后,介绍了如何通过调整数据分布来实现这一目标。
摘要由CSDN通过智能技术生成

《统计学习方法》——李航

回顾上一篇讲的Gradient Boosting方法, 其中比较经典的就是用于分类的AdaBoost。
其具体算法步骤如下:


注:步骤(2)(b)中,计算得到 e m e_m em后需要判断其值是否小于0.5,如果是则继续下面的步骤,否则需要重启:数据的权值分布设为离散均匀分布,重新采样并训练基分类器。重启的原因很简单,因为 e m > 0.5 e_m>0.5 em>0.5时,权重 α < 0 \alpha<0 α<0,这显然不是我们希望看到的。

大体流程
是不断在新抽取(依概率权重抽取)的样本集合上训练(同一个)基分类器,然后计算该分类器在整体训练集上的分类结果以及分类误差率,这个分类误差率决定了该基分类器的整体权重;上一个基分类器对整体训练集的分类结果及其分类误差率决定了下一次抽样的样本权重(即下一个基分类器的训练样本)。

(2)(d) 中的训练集数据权值更新公式可以写为:
w m + 1 , i = { w m , i Z m exp ⁡ ( − α m ) , i f G m ( x i ) = y i w m , i Z m exp ⁡ ( α m ) , i f G m ( x i ) ≠ y i w_{m+1,i}=\left\{ \begin{aligned} \frac{w_{m,i}}{Z_m}\exp(-\alpha_m) ,\quad & if \quad G_m(x_i)=y_i \\ \frac{w_{m,i}}{Z_m}\exp(\alpha_m), \quad & if \quad G_m(x_i)\ne y_i\\ \end{aligned} \right. wm+1,i=Zmwm,iexp(αm),Zmwm,iexp(αm),ifGm(xi)=yiifGm(xi)=yi

注意重启步骤保证了 e m < 0.5 e_m<0.5 em<0.5,则 α m > 0 \alpha_m>0 αm>0,说明在第m个分类器下被正确分类的样本观测 i 的(在下一轮抽样中的)权重会缩小,反之被错误分类的观测的权重会增大。说明后续基分类器将着重解决分类效果差的样本,从而提升整体分类正确率。

接下来讨论 f ( x ) f(x) f(x)的损失函数。
考虑二分类问题,求指数损失函数对应的风险(损失函数的期望即为风险函数):
R ( f ) = E [ l ( f ) ∣ X ] = E Y [ e − Y f ( X ) ∣ X ] = P r ( Y = 1 ∣ X ) e − f ( X ) + P r ( Y = − 1 ∣ X ) e f ( X ) \mathcal R(f) =\mathbb E[l(f)|X]=\mathbb E_{Y}[e^{-Yf(X)}|X]=Pr(Y=1|X)e^{-f(X)}+Pr(Y=-1|X)e^{f(X)} R(f)=E[l(f)X]=EY[eYf(X)X]=Pr(Y=1X)ef(X)+Pr(Y=1X)ef(X)
求导:
∂ ∂ f R ( f ∣ X ) = − P r ( Y = 1 ∣ X ) e − f ( X ) + P r ( Y = − 1 ∣ X ) e f ( X ) = 0 \frac{\partial}{\partial f}\mathcal R(f|X)=-Pr(Y=1|X)e^{-f(X)}+Pr(Y=-1|X)e^{f(X)}=0 fR(fX)=Pr(Y=1X)ef(X)+Pr(Y=1X)ef(X)=0
得到:
f ( X ) = 1 2 l o g ( P r ( Y = 1 ∣ X ) P r ( Y = − 1 ∣ X ) ) f(X)=\frac 12log(\frac{Pr(Y=1|X)}{Pr(Y=-1|X)}) f(X)=21log(Pr(Y=1X)Pr(Y=1X))

上面这些推导可以说明指数损失函数是合理的。因为最小化风险函数得到的分类器结果即为理想状况下的分类器。当 P r ( Y = 1 ∣ X ) > P r ( Y = − 1 ∣ X ) Pr(Y=1|X)>Pr(Y=-1|X) Pr(Y=1X)>Pr(Y=1X)时,显然分类器预测结果为1,这与真实情况吻合。
另外,上面这个式子对应 α m \alpha_m αm的计算公式,因此最终的基分类器线性组合式子 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)是合理的。
也可以通过举例子说明,比如当损失函数最小时, Y f ( X ) Yf(X) Yf(X)达到最大,Y与 f ( X ) f(X) f(X)最接近,即当 y = 1 y=1 y=1 f ( x ) = ∑ m α m f(x)=\sum_m \alpha_m f(x)=mαm时损失函数最小。

贪心算法
AdaBoost使用贪心算法进行优化。 f ( x ) = ∑ m α m G m ( x ) f(x)=\sum_m \alpha_mG_m(x) f(x)=mαmGm(x)
只考虑最近的一步,即
R ( α m G m ∣ X m ) = E X ∼ D m [ e − Y α m G m ( X ) ] = e − α m P r X ∼ D m ( Y = G m ( X ) ) + e α m P r X ∼ D m ( Y ≠ G m ( X ) ) = e − α m ( 1 − ϵ m ) + e α m ϵ m \begin{aligned} \mathcal R(\alpha_mG_m|X_m)&=\mathbb E_{X\sim \mathcal D_m}[e^{-Y\alpha_mG_m(X)}]\\ &=e^{-\alpha_m}Pr_{X\sim \mathcal D_m}(Y=G_m(X))+e^{\alpha_m}Pr_{X\sim \mathcal D_m}(Y\ne G_m(X))\\ &=e^{-\alpha_m}(1-\epsilon_m)+e^{\alpha_m}\epsilon_m \end{aligned} R(αmGmXm)=EXDm[eYαmGm(X)]=eαmPrXDm(Y=Gm(X))+eαmPrXDm(Y=Gm(X))=eαm(1ϵm)+eαmϵm
在上式中对 α m \alpha_m αm求导即可得到其更新公式: α m = 1 2 l o g ( 1 − ϵ m ϵ m ) \alpha_m=\frac 12log(\frac{1-\epsilon_m}{\epsilon_m}) αm=21log(ϵm1ϵm)

数据分布 D m \mathcal D_m Dm的更新
理想状况下,我们想要最小化:
R ( f m − 1 + G m ∣ D ) = E X ∼ D [ e − Y ( f m − 1 + G m ) ] = E X ∼ D [ e − Y f m − 1 e − Y G m ) ] ≈ E X ∼ D [ e − Y f m − 1 ( 1 − Y G m ( X ) + 1 2 ) ] \begin{aligned} \mathcal R(f_{m-1}+G_m|\mathcal D) &=\mathbb E_{X\sim \mathcal D}[e^{-Y(f_{m-1}+G_m)}]\\ &=\mathbb E_{X\sim \mathcal D}[e^{-Yf_{m-1}}e^{-YG_m})]\\ &\approx \mathbb E_{X\sim \mathcal D}[e^{-Yf_{m-1}}(1-YG_m(X)+\frac 12)]\\ \end{aligned} R(fm1+GmD)=EXD[eY(fm1+Gm)]=EXD[eYfm1eYGm)]EXD[eYfm1(1YGm(X)+21)]
只考虑第m步的情况,并假设前m-1步的情况如 f m − 1 f_{m-1} fm1已知。则上述优化问题等价于最大化以下式子:
maximize E X ∼ D [ e − Y ( X ) f m − 1 Y G m ( X ) ] \text{maximize} \mathbb E_{X\sim \mathcal D}[e^{-Y(X)f_{m-1}}YG_m(X)] maximizeEXD[eY(X)fm1YGm(X)]等价于: maximize E X ∼ D m [ Y ( X ) G m ( X ) ] \text{maximize} \mathbb E_{X\sim \mathcal D_m}[Y(X)G_m(X)] maximizeEXDm[Y(X)Gm(X)]
其中, (为了使得上面两个最小化问题的最优解相同)
D m = D e − Y ( X ) f m − 1 E X ∼ D ( e − Y ( X ) f m − 1 ) \mathcal D_m=\frac{\mathcal De^{-Y(X)f_{m-1}}}{\mathbb E_{X\sim\mathcal D}(e^{-Y(X)f_{m-1}})} Dm=EXD(eY(X)fm1)DeY(X)fm1

下标加1则得到
D m + 1 = D e − Y f m E X ∼ D ( e − Y f m ) = D e − Y f m − 1 e − α m Y G m E X ∼ D m ( e − Y ( X ) f m ) = e − α m Y G m E X ∼ D ( e − Y f m − 1 ) E X ∼ D ( e − Y ( X ) f m ) \begin{aligned} \mathcal D_{m+1}&=\frac{\mathcal De^{-Yf_{m}}}{\mathbb E_{X\sim\mathcal D}(e^{-Yf_{m}})} \\ &= \frac{\mathcal De^{-Yf_{m-1}}e^{-\alpha_mYG_m}}{\mathbb E_{X\sim\mathcal D_{m}}(e^{-Y(X)f_{m}})}\\ &= e^{-\alpha_mYG_m}\frac{\mathbb E_{X\sim\mathcal D}(e^{-Yf_{m-1}})}{\mathbb E_{X\sim\mathcal D}(e^{-Y(X)f_{m}})} \end{aligned} Dm+1=EXD(eYfm)DeYfm=EXDm(eY(X)fm)DeYfm1eαmYGm=eαmYGmEXD(eY(X)fm)EXD(eYfm1)
此即对应第m步时数据的分布 { w m , i , i = 1 , . . . , n } \{w_{m,i},i=1,...,n\} {wm,i,i=1,...,n}
基分类器 G m G_m Gm G m − 1 G_{m-1} Gm1没有训练好的样本上加强训练,这与Boosting的思想一致。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值