回顾

篇(一)中详细介绍了AdaBoost的算法步骤,主要结论就是下面的算法图所述,方便回顾摆在这里。

AdaBoost&GBDT(二)——vincen的学习笔记

上图中的Dm,iD_{m,i}即是上节中的ωm,i\omega_{m,i},这点需要注意一下,下面关于AdaBoost性质的推导中,我将沿用Dm,iD_{m,i}这个我认为较为直观的符号。

训练误差上界

AdaBoost的训练误差可以写为1Ni=1NI{G(xi)yi}\frac{1}{N}\sum_{i=1}^{N}I\{G(x_i)\neq y_i\}的形式,下面给出直接给出其上界(证明见书)

Theorem 1
1Ni=1NI{G(xi)yi}1Ni=1Nexp(yif(xi))=m=1MZm \frac{1}{N}\sum_{i=1}^{N}I\{G(x_i)\neq y_i\}\leqslant \frac{1}{N}\sum_{i=1}^Nexp(-y_if(x_i)) = \prod_{m=1}^MZ_m
Theorem 2
m=1MZm=m=1M2em(1em)=γm=12emm=1M14γm2exp(2m=1Mγm2) \prod_{m=1}^MZ_m = \prod_{m=1}^M2\sqrt {e_m(1-e_m)}\overset{令\gamma_m = \frac{1}{2}-e_m}{=}\prod_{m=1}^M\sqrt{1-4\gamma_m^2}\leqslant exp(-2\sum_{m=1}^M\gamma_m^2)
关于Theorem 2中最后一式的证明,在Taylor展开时不能忽略余项的影响,用Lagrange余项展开至二阶就有
m=1M14γm2=m=1M12γm22γm4(1ξ1)32m=1M12γm2+2γm4eξ2=exp(2m=1Mγm2) \begin{aligned} \prod_{m=1}^M\sqrt{1-4\gamma_m^2} &= \prod_{m=1}^M{1-2\gamma_m^2-\frac{2\gamma_m^4}{(1-\xi_1)^\frac{3}{2}}} \\ &\leqslant\prod_{m=1}^M{1-2\gamma_m^2+2\gamma_m^4e^{\xi_2}} \\ &=exp(-2\sum_{m=1}^M\gamma_m^2) \end{aligned}
Corollary

若存在γ\gamma,满足γγm(m=1,2,,M)\gamma \leqslant \gamma_m(m = 1,2,\ldots,M),则有
1Ni=1NI{G(xi)yi}exp(2Mγ2) \frac{1}{N}\sum_{i=1}^NI\{G(x_i)\neq y_i\} \leqslant exp(-2M\gamma^2)

这个推论是Theorem 1Theorem 2的直接推论,揭示了AdaBoost训练出的强分类器的误差率与弱分类器误差率之间的关系,若弱分类器带权分类错误率eme_m的上界ee\downarrow,则由γ=minm(12em)=12e\gamma = \min_m(\frac{1}{2} - e_m)=\frac{1}{2}-e可知γ\gamma\uparrow,造成强分类器的训练误差上界exp(2Mγ2)exp(-2M\gamma^2)\downarrow,这意味着若我们通过一些方式(比如调整基分类器超参数或更换基分类器的学习算法)能达到使ee\downarrow的效果,则强分类错误率的上界会随着ee的减小以指数速率下降,这是AdaBoost的一个重要且良好的性质。

AdaBoost加法模型与前向分步算法角度

这一部分的主要目的是从AdaBoost入手去理解了前向分步算法的步骤,以便于理解后面GBDT的算法步骤。

加法模型(additive model)与前向分步算法(forward stagewise algorithm)

对加法模型
f(x)=m=1Mβmb(x;γm)f(x) = \sum_{m=1}^M\beta_mb(x;\gamma_m)
b(x,γm),γmβmb(x,\gamma_m)是基模型,\gamma_m是基模型参数,\beta_m是基模型的系数

所构建的损失函数
minβm,γmi=1NL(yi,m=1Mβmb(xi;γm)) \min_{\beta_m,\gamma_m}\sum_{i=1}^NL(y_i,\sum_{m=1}^M\beta_mb(x_i;\gamma_m))

是一个很复杂的优化问题,前向分步算法将其拆分为一个MM步的简单优化问题,每次只学习一个基模型与其系数,与向前逐步回归的思想有些类似。

我将其制作成伪代码的形式贴在这里。
AdaBoost&GBDT(二)——vincen的学习笔记

说完加法模型和前向分步算法后,下面着重解析AdaBoost前向分步算法的形式

AdaBoost前向分步算法

书上以如下定理的形式给出

Theorem 3 \quadAdaBoost是由基本分类器组成的加法模型,损失函数是指数损失函数,且在每一步进行权值归一化的前向分步算法的特例。

proof.

首先,AdaBoost的形式为f(x)=m=1MαmGm(x)f(x) = \sum_{m=1}^M\alpha_mG_m(x)
他显然是一个由基分类器组成的加法模型。

当损失函数设置为指数损失函数时
L(y,f(x))=exp[yf(x)] L(y,f(x)) = exp[-yf(x)]

由上面前向分步算法的流程,第mm步的优化目标如下
(αm,Gm(x))=argminα,Gi=1Nexp[yi(fm1(xi)+αG(xi))] (\alpha_m,G_m(x)) = arg\min_{\alpha,G}\sum_{i=1}^Nexp[-y_i(f_{m-1}(x_i)+\alpha G(x_i))]

这里我们注意到第mm步优化时,fm1f_{m-1}是已知的,则有
(αm,Gm(x))=argminα,Gi=1Nexp[yi(fm1(xi)+αG(xi))]=argminα,Gi=1Nexp[yi(fm1(xi)]exp[yiαG(xi)]ωmi=exp[yi(fm1(xi)],=argminα,Gi=1Nωmiexp[yiαG(xi)]=argminα,GTωmieα+Fωmieα \begin{aligned} (\alpha_m,G_m(x)) &= arg\min_{\alpha,G}\sum_{i=1}^Nexp[-y_i(f_{m-1}(x_i)+\alpha G(x_i))] \\ &=arg\min_{\alpha,G}\sum_{i=1}^Nexp[-y_i(f_{m-1}(x_i)]exp[-y_i\alpha G(x_i)] \\ 记\overline{\omega}_{mi}=exp[-y_i(f_{m-1}(x_i)],有 \\ &=arg\min_{\alpha,G}\sum_{i=1}^N\overline{\omega}_{mi}exp[-y_i\alpha G(x_i)] \\ &=arg\min_{\alpha,G}\sum_{T}\overline{\omega}_{mi}e^{-\alpha} + \sum_{F}\overline{\omega}_{mi}e^{\alpha} \\ \end{aligned}
其中TFT,F分别代表G(x)G(x)分类正确与错误的那些样本,分类正确的样本具有特征G(xi)=yiG(x_i) = y_i,分类错误的样本具有特征G(xi)yiG(x_i) \neq y_i,而在α>0\alpha > 0的限制下,有 eα>eαe^{\alpha} >e^{-\alpha};再加上ωmi=exp[yifm1(xi)]>0\overline{\omega}_{mi} = exp[-y_if_{m-1}(x_i)] > 0这一条信息,使上式达到最小的GmG^*_m应使分类错误的样本权值和最小,故GmG^*_m形式为
Gm=argminGi=1NωmiI{yiG(xi)} G^*_m =arg\min_G\sum_{i=1}^N\overline{\omega}_{mi}I\{y_i \neq G(x_i)\}
下求最优的α\alpha,承接上式
i=1Nexp[yiαG(xi)]=Tωmieα+Fωmieα=Tωmieα+FωmieαFωmieα+Fωmieα=eαi=1Nωmi+(eαeα)Fωmi \begin{aligned} \sum_{i=1}^Nexp[-y_i\alpha G(x_i)] &=\sum_{T}\overline{\omega}_{mi}e^{-\alpha} + \sum_{F}\overline{\omega}_{mi}e^{\alpha} \\ &=\sum_{T}\overline{\omega}_{mi}e^{-\alpha} +\sum_{F}\overline{\omega}_{mi}e^{-\alpha} - \sum_{F}\overline{\omega}_{mi}e^{-\alpha} + \sum_{F}\overline{\omega}_{mi}e^{\alpha} \\ &= e^{-\alpha}\sum_{i=1}^N\overline{\omega}_{mi} + (e^{\alpha}-e^{-\alpha})\sum_F\overline{\omega}_{mi} \end{aligned}
记上式为LL,并对α\alpha求导,令导数为0,
Lα=eαi=1Nωmi+(eα+eα)Fωmi=eαTωmi+eαFωmi=0 \begin{aligned} \frac{\partial{L}}{\partial{\alpha}} &= -e^{-\alpha}\sum_{i=1}^N\overline{\omega}_{mi} + (e^{\alpha}+e^{-\alpha})\sum_F\overline{\omega}_{mi} \\ &=-e^{-\alpha}\sum_{T}\overline{\omega}_{mi}+e^{\alpha}\sum_F\overline{\omega}_{mi} = 0 \\ \end{aligned}
最终得如下α\alpha^*
α=12logTωmiFωmi=12logTωmi/i=1NωmiFωmi/i=1Nωmi \begin{aligned} \alpha^* &= \frac{1}{2}log\frac{\sum_T\overline{\omega}_{mi}}{\sum_F\overline{\omega}_{mi}} \\ &=\frac{1}{2}log\frac{\sum_T\overline{\omega}_{mi}/\sum_{i=1}^N\overline{\omega}_{mi}}{\sum_F\overline{\omega}_{mi}/\sum_{i=1}^N\overline{\omega}_{mi}} \end{aligned}
em=Fωmii=1Nωmie_m = \frac{\sum_F\overline{\omega}_{mi}}{\sum_{i=1}^N\overline{\omega}_{mi}},则Tωmii=1Nωmi=1em\frac{\sum_T\overline{\omega}_{mi}}{\sum_{i=1}^N\overline{\omega}_{mi}} = 1-e_m,这里应注意eme_m与前面AdaBoost算法中的eme_m的意义都是带权错误率,且此处的eme_m亦属于[0,1][0,1]

α\alpha^*的形式变为
αm=12log1emem \alpha^*_m = \frac{1}{2}log\frac{1-e_m}{e_m}
至于样本权重更新公式,由fm(x)=fm1(x)+αmGm(x)f_m(x) = f_{m-1}(x)+\alpha_mG_m(x),知
ωm+1,i=exp[yifm(xi)]=exp[yifm1(x)yiαmGm(x)]=exp[yifm1(x)]exp[yiαmGm(x)]=ωmiexp[yiαmGm(x)] \begin{aligned} \overline{\omega}_{m+1,i} &= exp[-y_if_m(x_i)] \\ & = exp[-y_if_{m-1}(x)-y_i\alpha_mG_m(x)] \\ & = exp[-y_if_{m-1}(x)]exp[-y_i\alpha_mG_m(x)] \\ & = \overline{\omega}_{mi}exp[-y_i\alpha_mG_m(x)] \end{aligned}

可以看到只相差一个规范化因子,若我们在每一步中加入规范化权值这一步,则开始由f0=0f_0 = 0ω1i=1\overline{\omega}_{1i} = 1,规范化后即是ω1i=1N{\omega}_{1i} = \frac{1}{N},其后由上面推理可知,em,αm,Gm(x)e_m,\alpha_m,G_m(x)的更新方式完全相同。

于是AdaBoost是在每一步归一化权值的前向分步算法

相关文章:

  • 2021-11-06
  • 2021-08-07
  • 2021-08-03
  • 2021-05-08
  • 2021-11-21
  • 2021-12-12
  • 2021-10-02
猜你喜欢
  • 2021-05-15
  • 2021-12-19
  • 2021-11-02
  • 2022-12-23
  • 2021-10-14
  • 2022-01-16
相关资源
相似解决方案