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

上图中的Dm,i即是上节中的ωm,i,这点需要注意一下,下面关于AdaBoost性质的推导中,我将沿用Dm,i这个我认为较为直观的符号。
训练误差上界
AdaBoost的训练误差可以写为N1∑i=1NI{G(xi)=yi}的形式,下面给出直接给出其上界(证明见书)
Theorem 1
N1i=1∑NI{G(xi)=yi}⩽N1i=1∑Nexp(−yif(xi))=m=1∏MZm
Theorem 2
m=1∏MZm=m=1∏M2em(1−em)=令γm=21−emm=1∏M1−4γm2⩽exp(−2m=1∑Mγm2)
关于Theorem 2中最后一式的证明,在Taylor展开时不能忽略余项的影响,用Lagrange余项展开至二阶就有
m=1∏M1−4γm2=m=1∏M1−2γm2−(1−ξ1)232γm4⩽m=1∏M1−2γm2+2γm4eξ2=exp(−2m=1∑Mγm2)
Corollary
若存在γ,满足γ⩽γm(m=1,2,…,M),则有
N1i=1∑NI{G(xi)=yi}⩽exp(−2Mγ2)
这个推论是Theorem 1与Theorem 2的直接推论,揭示了AdaBoost训练出的强分类器的误差率与弱分类器误差率之间的关系,若弱分类器带权分类错误率em的上界e↓,则由γ=minm(21−em)=21−e可知γ↑,造成强分类器的训练误差上界exp(−2Mγ2)↓,这意味着若我们通过一些方式(比如调整基分类器超参数或更换基分类器的学习算法)能达到使e↓的效果,则强分类错误率的上界会随着e的减小以指数速率下降,这是AdaBoost的一个重要且良好的性质。
AdaBoost加法模型与前向分步算法角度
这一部分的主要目的是从AdaBoost入手去理解了前向分步算法的步骤,以便于理解后面GBDT的算法步骤。
加法模型(additive model)与前向分步算法(forward stagewise algorithm)
对加法模型
f(x)=m=1∑Mβmb(x;γm)
b(x,γm)是基模型,γm是基模型参数,βm是基模型的系数
所构建的损失函数
βm,γmmini=1∑NL(yi,m=1∑Mβmb(xi;γm))
是一个很复杂的优化问题,前向分步算法将其拆分为一个M步的简单优化问题,每次只学习一个基模型与其系数,与向前逐步回归的思想有些类似。
我将其制作成伪代码的形式贴在这里。

说完加法模型和前向分步算法后,下面着重解析AdaBoost前向分步算法的形式
AdaBoost前向分步算法
书上以如下定理的形式给出
Theorem 3 AdaBoost是由基本分类器组成的加法模型,损失函数是指数损失函数,且在每一步进行权值归一化的前向分步算法的特例。
proof.
首先,AdaBoost的形式为f(x)=m=1∑MαmGm(x)
他显然是一个由基分类器组成的加法模型。
当损失函数设置为指数损失函数时
L(y,f(x))=exp[−yf(x)]
由上面前向分步算法的流程,第m步的优化目标如下
(αm,Gm(x))=argα,Gmini=1∑Nexp[−yi(fm−1(xi)+αG(xi))]
这里我们注意到第m步优化时,fm−1是已知的,则有
(αm,Gm(x))记ωmi=exp[−yi(fm−1(xi)],有=argα,Gmini=1∑Nexp[−yi(fm−1(xi)+αG(xi))]=argα,Gmini=1∑Nexp[−yi(fm−1(xi)]exp[−yiαG(xi)]=argα,Gmini=1∑Nωmiexp[−yiαG(xi)]=argα,GminT∑ωmie−α+F∑ωmieα
其中T,F分别代表G(x)分类正确与错误的那些样本,分类正确的样本具有特征G(xi)=yi,分类错误的样本具有特征G(xi)=yi,而在α>0的限制下,有 eα>e−α;再加上ωmi=exp[−yifm−1(xi)]>0这一条信息,使上式达到最小的Gm∗应使分类错误的样本权值和最小,故Gm∗形式为
Gm∗=argGmini=1∑NωmiI{yi=G(xi)}
下求最优的α,承接上式
i=1∑Nexp[−yiαG(xi)]=T∑ωmie−α+F∑ωmieα=T∑ωmie−α+F∑ωmie−α−F∑ωmie−α+F∑ωmieα=e−αi=1∑Nωmi+(eα−e−α)F∑ωmi
记上式为L,并对α求导,令导数为0,
∂α∂L=−e−αi=1∑Nωmi+(eα+e−α)F∑ωmi=−e−αT∑ωmi+eαF∑ωmi=0
最终得如下α∗
α∗=21log∑Fωmi∑Tωmi=21log∑Fωmi/∑i=1Nωmi∑Tωmi/∑i=1Nωmi
记em=∑i=1Nωmi∑Fωmi,则∑i=1Nωmi∑Tωmi=1−em,这里应注意em与前面AdaBoost算法中的em的意义都是带权错误率,且此处的em亦属于[0,1]。
则α∗的形式变为
αm∗=21logem1−em
至于样本权重更新公式,由fm(x)=fm−1(x)+αmGm(x),知
ωm+1,i=exp[−yifm(xi)]=exp[−yifm−1(x)−yiαmGm(x)]=exp[−yifm−1(x)]exp[−yiαmGm(x)]=ωmiexp[−yiαmGm(x)]
可以看到只相差一个规范化因子,若我们在每一步中加入规范化权值这一步,则开始由f0=0知ω1i=1,规范化后即是ω1i=N1,其后由上面推理可知,em,αm,Gm(x)的更新方式完全相同。
于是AdaBoost是在每一步归一化权值的前向分步算法。