本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. AdaBoost的思想
回顾一下boosting的思想:将多个弱学习器“提升”为强学习器。AdaBoost也是基于此思想提出的,它的全称是Adaptive Boosting,即能够适应弱学习器的各自训练误差率。
它的流程可以概括为:先对每个样本赋予相同的初始权重,每一轮学习器训练后都会根据该学习器的表现对每个样本的权重进行调整,增加错分样本的权重,使得下一个学习器对错分样本有更多的关注度。最后对多个学习器进行加权求和。
2. 数学定义和推导
2.1. 决策推理过程的输出表达式定义
以二分类为例,正类输出为+1,负类输出为-1.假设AdaBoost的学习过程得到了M个学习器Gm(x),m=1,2,⋯,M,对于某个输入x,对应的输出分别为ym(x),m=1,2,⋯,M。则该算法的最终输出为:
YM(x)=sign(m=1∑Mαmym(x))(2-1)
2.2. 优化训练过程中的迭代表达式推导
由上面的定义可以知道,AdaBoost算法得到的强学习器是多个弱学习期的线性组合:
f(x)=m=1∑MαmGm(x)(2-2)
记训练集为(x1,y1),(x2,y2),⋯,(xN,yN).每一步的损失函数是固定的形式,记为L(y,fm(x)),则第M步时我们的优化目标是:
arg(αm,Gm)mini=1∑NL(yi,m=1∑MαmGm(x))(2-3)
上式中需要优化的参数有M组(每一步的参数都要更新),实际求解比较复杂,我们可以简化一下,假设前M-1次迭代的系数α和基学习器G(x)都是固定的,而fM(x)=fM−1+αMGM(x),因此我们只需要优化αN,GM(x)即可。其实这里有点贪心算法的思想。
损失函数L(y,fm(x))的具体表达式一般采用指数损失函数:
L(y,fm(x))=e−yf(x)(2-4)
因此优化目标为:
(αM,GM(x))=arg(α,G)mini=1∑Ne−yi(fM−1(xi)+αG(xi))(2-5)
由于前M-1轮迭代的系数和基学习器与上述的α,G无关,可以记wi(M)=e−yifM−1(xi),它代表了第M轮迭代前,每个样本被赋予的权重(其实是每个样本对应的损失函数的权重)。而且注意到,wi(M)是会在每次迭代的时候更新的,第m次迭代的时候会更新第m+1次对应的权重。
于是乎,{2-5}中的目标函数可以化为:
i=1∑Nwi(M)e−yiαG(xi)=e−αyi=G(xi)∑wi(M)+eαyi=G(xi)∑wi(M)=(eα−e−α)i=1∑Nwi(M)1(yi=G(xi))+e−αi=1∑Nwi(M)(2-6)
2.3. 由迭代过程表达式得到的几个结论
由上一小节可以知道几个重要推论
2.3.1. 基学习器GM(x)
使{2-6}最小化的G(x)等价于使(eα−e−α)∑i=1Nwi(M)1(yi=G(xi))最小化的G(x),也即每一轮的基学习器是通过最小化的带权重误差得到。
2.3.3. 下一轮样本权重wi(M+1)
wi(M+1)=e−yifM(xi)=e−yi(fM−1(xi)+αMGM(xi))=wi(M)e−yiαMGM(xi)。可以看到,若αM>0,则对于第M轮分正确的样本,下一轮的权重会减小;对于第M轮分错误的样本,下一轮的权重会增大。
2.3.4. 各基学习器的系数αM
GM(x)在训练集上的加权误差率ϵM=∑i=1Nwi(M)∑i=1Nwi(M)1(yi=G(xi)).而如果我们对{2-6}中的α求偏导使其等于0,则有−e−α∑yi=G(xi)wi(M)+eα∑yi=G(xi)wi(M)=0,两边乘eα,得:e2α=∑yi=G(xi)wi(M)∑yi=G(xi)wi(M)=ϵM1−ϵM,从而有αM=21lnϵM1−ϵM.
因此,准确率越高的基学习器会有越大的权重。
3. Adaboost流程图

参考:
www.cnblogs.com/massquantit…