您的位置:首页 > 其它

初识AdaBoost

2017-03-24 18:03 218 查看

AdaBoost

martin


AdaBoost
算法过程

基分类器权值a与训练数据集权值w的分析

AdaBoost推导

AdaBoost是典型的Boosting方法,并且效果很显著。下图是AdaBoost的框架图:



算法过程

下面介绍AdaBoost算法的过程:

1. 初始化训练数据的权值分布:

D1=(w11,w12,w13,...,w1N),w1i=1N,i=1,2,...,N

2. 对m=1,2,...,M

(a) 使用具有权值分布Dm的训练集学习,得到基本分类器:

Gm(x):X−>{−1,+1}

(b) 计算Gm(x)在训练数据集上的分类误差:

em=P(Gm(xi)≠yi)=∑Ni=1wmiI(Gm(xi)≠yi)∑Ni=1wmi=∑i=1NwmiI(Gm(xi)≠yi)

上式中,∑i=1Nwmi=1

(c) 计算Gm(x)的系数:

αm=12log1−emem

(d) 更新数据集的权值分布:

Dm+1=(wm+1,1,wm+1,2,...,wm+1,N)

wm+1,i=wmiZme−αmyiGm(xi)

其中,Zm=∑i=1Nwmie−αmyiGm(xi),是规范化因子

(e) 重复(a)−(d)步m次得到m个权值a和m个基分类器G(x)

3. 构建基本分类器的线性组合:

f(x)=∑m=1MamGm(x)

4. 最终得到分类器:

G(x)=sign(f(x))=sign(∑m=1MamGm(x))

基分类器权值a与训练数据集权值w的分析

1. 先来看基分类器的权值α,公式如下:

α=12log1−emem

我们知道AdaBoost是将多个弱分类器组合起来形成一个很强的分类器,但这里有个隐含条件:弱分类器。什么叫弱分类器?意思就是在效果上比随机猜想要好的分类器。比如二分类问题,随机猜想的正确率是0.5,所以说弱分类器的正确率一定要比0.5高,于是它的错误率em<0.5,所以α会随着em的减小而增大,这是什么意思?意思是,如果我的基分类器的错误率很小,也就是正确率很大,那么在众多基分类器中我给予它很大的权值α,让它能发挥更大的作用。

2. 再来看训练数据集分布的权值分配,公式如下:

wm+1,i=wm,iZme−amyiG(xi)=⎧⎩⎨wm,iZme−am,Gm(xi)=yiwm,iZmeam,Gm(xi)≠yi

由公式可知,对训练集的样例正确分类与错误分类之间,错误分类样本的权值被放大:e2αm=1−emem倍,所以,在下一轮学习中将会被更大关注。

AdaBoost推导

AdaBoost模型是由基本分类器组成的加法模型,损失函数是指数函数。

1. 加法模型:f(x)=∑Mm=1αmGm(x)

2. 损失函数:L(y,f(x))=e−yf(x)

3. 每次训练后的基分类器都是乘以α再与前一个模型线性相加,所以对于第m−1次训练后模型为:

fm−1=fm−2+αm−1Gm−1(x)=α1G1(x)+...+αm−1Gm−1(x)

4. 于是,在第m次训练后有:fm(x)=fm−1(x)+αmGm(x)

5. 目标是每一次的损失在训练集上最小,所以最小化目标函数为:

(αm,Gm(x))=min∑i=1Ne−yifm(xi)=min∑i=1Ne−yi[fm−1(xi)+αmGm(x)]=min∑i=1Ne−yifm−1(xi)−yiαmGm(x)=min∑i=1Nwmie−yiαmGm(x)

上式中,将e−yifm−1(xi)=wmi,因为wmi既不依赖α也不依赖与G,所以与最小无关。

6. 于是,有:

min∑i=1Nwmie−yiαmGm(x)=min∑yi=Gm(xi)wmie−a+∑yi≠Gm(xi)wmiea=min(e−a∑i=1NwmiI(yi=Gm(xi))+eα∑i=1NwmiI(yi≠Gm(xi)))=min(e−a∑i=1Nwmi[1−I(yi≠Gm(xi))]+eα∑i=1NwmiI(yi≠Gm(xi)))=min((eα−e−α)∑i=1NwmiI(yi≠Gm(xi))+e−a∑i=1Nwmi)

所以,我们得到了优化的目标函数:L(α)=(eα−e−α)∑i=1NwmiI(yi≠Gm(xi))+e−a∑i=1Nwmi

7. 对6中的目标函数关于α求导,令∂L(α)∂α=0,求的最小值:

∂L(α)∂α=−e−a∑i=1Nwmi+(eα+e−α)∑i=1NwmiI(yi≠Gm(xi))=0

等价于:

(eα+e−α)∑i=1NwmiI(yi≠Gm(xi))=e−a∑i=1Nwmi

因为:em=∑Ni=1wmiI(yi≠Gm(xi)),∑Ni=1wmi=1

所以有:

(eα+e−α)em=e−a

等价于:

e2a=1−emem

解得:

α=12ln1−emem

8. 由于之前有个假设:wmi=e−yifm−1(xi),而这个式子又可以化为:

wm+1,i=e−yifm(xi)=e−yi[fm−1(xi)+αmGm(xi)]=wmie−yiαmGm(xi)

于是,就有了更新公式:wm+1,i=wmie−yiαmGm(xi),与AdaBoost算法中的更新公式只差了个规范化因子而已。

参考:

[1] 《统计学习方法》李航
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: