AdaBoost算法还有一个解释,即可以认为AdaBoost模型为加法模型,损失函数为指数函数,学习算法为前向分步算法时的二类分类学习方法。
首先,我们来看一下什么是前向分步算法。
1、前向分步算法
考虑加法模型(additive model):
在给定训练数据及损失函数的L(y,f(x))的条件下,学习加法模型f(x)成为经验风险极小化即损失函数极小化问题:
通常这时一个复杂的优化问题,用前向分步算法求解这一优化问题的想法是:因为学习的是加法模型,如果能够从前往后,每一步只学习一个基函数及其系数,逐步逼近优化目标,那么就可以简化优化的复杂度,具体的,每步只需要优化如下损失函数:
则前向分步算法的一般流程为:
这样,前向分步算法将同时求解从m=1到M所有参数的优化问题简化为逐次求解每一步参数的优化问题。
2、前向分步算法与AdaBoost
由前向分步算法可以推导出我们之前定义的AdaBoost算法,用定理叙述这一关系。
定理:AdaBoost算法是前向分步加法算法的特例,这时,模型是由基本分类器组成的加法模型,损失函数是指数函数。
接下来我们就来证明它。
前向分步算法学习的是加法模型,当基函数为基本分类器时,该加法模型等价于AdaBoost的最终分类器:
前向分步算法会逐一学习每个基函数G(x),这一过程与AdaBoost算法逐一学习基本分类器的过程一致。然后证明前向分步算法的损失函数时指数损失函数函数时,其学习的具体操作等价于AdaBoost算法学习的具体操作:
假设我们已经经历了m-1轮的迭代,则我们可以得到:
在第m轮继续迭代得到:
第m轮迭代的目标是使前向分步算法得到的系数和基分类器在训练数据集T上指数损失最小,即:
之后求解α:
这里与AdaBoost更新α完全一致
但是,这里与AdaBoost算法更新每个数据点的权重有一些细微的差别: