前向分步算法到AdaBoost
前向分步算法与AdaBoost有什么关系呢?除了都属于Boosting的模型,其实AdaBoost是当前向分步算法损失函数为指数损失时的特例。这篇就写一下推导的过程。
前向分步算法 Forward Stagewise Additive Modeling
- 初始化f0(x)=0
- 对于m=1,2,...,M
(a)
(βm,γm)=argminβ,γ∑i=1NL(yi,fm−1(xi)+βb(xi;γ))
(b)
fm(x)=fm−1(x)+βmb(x;γm)
前向分步算法的步骤如上,其实我觉得应该翻译成前向分步累加模型更适合。因为最终的决策函数f(x)是由一系列的基函数b(x;γm)与相应的权值βm累加起来的。前向分步指的是,最小化损失函数获取第m步的
对于回归问题,前向分步算法的损失函数可以选平方损失,即
L(yi,f(x))=(yi−f(x))2
所以有
L(yi,fm−1(xi)+βb(xi;γ))=(yi−fm−1(xi)−βb(xi;γ))2=(rim−βb(xi;γ))2
其中rim=(yi−fm−1(xi)),这可以理解成是当前模型的残差,为了获取 βmb(x;γm),也就是令其去拟合当前模型的残差。
而AdaBoost是个分类器,对于分类问题,平方损失就不太适合了。所以引入指数损失,即
L(y,f(x))=exp(−yf(x))
基本的AdaBoost是一个二分类模型,令其基函数b(x;γ)=G(x),所以有Gm(x)∈{
−1,1}。
则在指数损失的基础上,就需要解决如下问题
(βm,Gm)=argminβ,G∑i=1Nexp[−yi(fm−1(xi)+