提升方法在分类问题中通过改变训练样本的权重,学习多个分类器,并将这些分类器线性组合来提高分类的性能。提升方法需要解决一下两个问题:
- 每一轮如何改变训练数据的权值分布
- 如何将若分类器组合得到一个强分类器
对应的解决方法分别是:
- 提高前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值
- 加权多数表决,加大分类误差率小的若分类求得权值,减小分类误差率大的弱分类器的权值
1. 算法流程
1.1 AdaBoost 算法
输入:二分类样本训练集:
输出:最终分类器
(1)初始化训练数据的权值分布,即每个训练数据集具有均匀的权值分布
(2)对 m=1,2,...,M
(a)使用具有权值分布 的训练数据集学习,得到基本分类器
(b)计算 在训练数据集上的分类误差率,误差率的值是被 误分类样本的权值之和。
(c)计算 的系数
可以看出,当 时, ,并且随着 的减小, 在增大。 所以分类误差率越小的基本分类器在最终分类器中的作用越大。
(d)更新训练数据集的权值分布
其中, 是规范化因子:
可以看到,被误分类的样本的权值得以扩大,正确分类样本的权值缩小。
(3)构建基本分类器的线性组合
得到最终分类器
的符号决定实例 x 的类别,绝对值表示分类的确信度。
2. 训练误差分析
2.1 训练误差界
AdaBoost 算法最终分类器的训练误差界为:
2.2 二分类问题的训练误差界
其中
2.3 推论
如果存在 ,对所有 m 有 ,则
这表明 AdaBoost 的训练误差是指数下降的。
3. 算法解释
AdaBoost 算法可以被认为是加法模型,损失函数为指数函数,学习算法为前向分布算法的二分类学习方法。
3.1 前向分步算法
考虑加法模型
其中, 为基函数, 是基函数的参数, 是基函数的系数。
在给定训练数据及损失函数 的条件下,学习加法模型 成为经验风险极小化即损失函数极小化问题:
前向分步算法求解该问题的想法是:因为学习的是加法模型,如果能从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,那就可以简化其复杂度。
由该想法得,每一步只需要优化如下损失函数:
3.1.1 算法流程
输入:训练数据集 T ,损失函数 ,基函数
输出:加法模型
(1)初始化
(2)对 m = 1,2,..,M
(a)极小化损失函数得到参数
(b)更新
(3)得到加法模型
4. 提升树
提升树是以分类树或回归树为基本分类器的提升方法,提升树被认为是统计学习中性能最好的方法之一。
4.1 模型
提升方法实际采用的是加法模型(基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称作提升树。其表示如下:
其中 表示一个决策树 , 表示参数,M 为树的个数
4.2 提升树算法
针对不同问题的提升树算法,主要区别在于使用的损失函数不同,如用平方误差损失函数来处理回归问题,用指数损失函数处理分类问题,一般损失函数处理一般决策问题。
4.2.1 回归问题的提升树算法
输入:训练数据集 T
输出:提升树
(1)初始化
(2)对 m = 1,2,...,M
(a)计算残差
(b)拟合残差 学习一个回归树得到
(c)更新
(3)得到提升回归树
4.3 梯度提升
对一般损失函数而言,每一步的参数优化相对困难,因此提出了梯度提升算法,即最速下降法的近似方法,该方法的关键是利用损失函数的负梯度在当前模型的值:
将该值作为回归问题提升树算法中的残差近似值,拟合得到一个回归树。