算法分析
在Adaboost算法的示例解释中的算法流程中,给出了分类器权重、分类误差以样本权重的更新公式,这一部分从前向分步算法的角度来解释这些公式的由来。
1) 每个分类器的权重计算公式:
αm=12ln1−emem
2)分类误差的计算公式
em=P(Gm(xi)≠yi)=∑i=1NwmiI(Gm(xi)≠yi)
3)样本权重的更新公式
wm+1,i=wmiZme−αmyiGmxi,i=1,2,...N
2前向分步算法与Adaboost
Adaboost算法其实可以认为是模型为加法模型,损失函数为指数函数,学习算法为前向分布算法的二分类学习方法。
1)加法模型
f(x)=∑m=1Mβb(x;γm)
2)指数损失函数&优化目标
L(y,f(x))=∑i=1Nexp(−yf(x))
minβm,γm∑i=1NL(yi,∑m=1mβmb(xi;γm))
3)前向分步优化算法
加法模型的优化通常是一个复杂的优化问题,前向分布算法求解这一优化问题的思路是:
从前往后每一步只学习一个基函数及其系数,逐步逼近优化目标函数。
优化目标函数: (βm,γm)=argminβ,γ∑Ni=1L(yi,fm−1(xi)+βb(xi;γ))
假设经过m-1轮迭代前向分步算法已经得到 fm−1(x)
fm−1(x)=fm−2(x)+αm−1Gm−1(x)=α1G1(x)+...+αm−1Gm−1(x)
在第m轮迭代得到
αm,Gm(x)和fm(x)
fm(x)=fm−1(x)+αmGm(x)
目标是使前向分布算法得到的
αm,Gm(x) 使
fm(x) 在训练集T上的指数损失最小,可以表示为:
(αm,Gm(x))=argminα,G∑i=1Nexp(−yi(fm−1(x)+αmGm(xi))=argminα,G∑i=1Nw⎯⎯⎯miexp[−yiαG(xi)]
其中
w⎯⎯⎯mi=exp[−yifm−1(xi)] ,因为
w⎯⎯⎯mi 既不依赖于
α 也不依赖于G所以与最小化无关。
对于任意的
α>0 ,使上式子最小的
G(x) 可以由下式子得到:
G∗m(x)=argminG∑i=1Nw⎯⎯⎯miI(yi≠G(xi))
G∗m 其实就是Adaboost算法的基分类器,基本思想就是让使加权训练数据分类误差率最小的分类器。
∑i=1Nw⎯⎯⎯miexp(−yiαG(xi))=∑yi=Gm(xi)w⎯⎯⎯mie−α+∑yi≠Gm(xi)w⎯⎯⎯mieα=(eα−e−α)∑i=1Nw⎯⎯⎯miI(yi≠G(xi))+e−α∑i=1Nw⎯⎯⎯mi
对
α 求导并令导数为0,可得到
α∗m=12ln1−emem
其中
em 是分类误差
em=∑Ni=1w⎯⎯⎯miI(yi≠Gm(xi))∑Ni=1w⎯⎯⎯mi=∑i=1Nw⎯⎯⎯miI(yi≠Gm(xi))
对于样本权重的更新而言,由于
fm(x)=fm−1(x)+αmGm(x) ,以及
w⎯⎯⎯mi=exp[−yifm−1(xi)]
所以可得:
1)fm−1(xi)=−yilnw⎯⎯⎯mi
2)fm(xi)=−yilnw⎯⎯⎯m+1,i
3)w⎯⎯⎯m+1,i=w⎯⎯⎯m,iexp[−yiαmGm(x)]
在上式中标注为红色的公式即为,从前向分步的角度推导出来的分类器权重、分类误差以及样本权重更新公式。