1. Boosting
Boosting(提升方法)是将弱学习器算法提升为强学习算法的统计学习方法。在分类问题中,提升方法通过反复修改训练数据的权值分布,构建一系列基本分类器(也称为弱分类器),并将这些基本分类器线性组合,构成一个强分类器。AdaBoost就是Boosting中的代表性算法。Boosting原理可由下面这张图所示:
2. AdaBoost
2.1 AdaBoost算法过程
输入:训练数据集,其中;弱学习器算法;
输出:最终分类器
(1)初始化训练数据的权值分布
(2)对个基本分类器
(a)使用具有权值分布的训练数据集,学习得到基本分类器
(b)计算在训练数据集上的分类误差率
(c)计算的权重
(d)更新训练数据集的权值分布
其中,是规范化因子
(3)构建基本分类器的线性组合
得到最终分类器
其中,是符号函数,取某个数的符号(正或负)。
对上述过程的说明:
步骤(1):假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同,这一假设可以保证第1步能够在原始数据集上学习得到基本分类器
步骤(2):AdaBoost反复学习基本分类器,在每一轮依次执行下列操作:
(a)使用当前权值分布为的训练数据集,学习得到基本分类器
(b)计算基本分类器在加权训练数据集上的分类误差率:
其中,表示第轮迭代中第个样本的权值,即在加权训练数据集上的分类误差率就是被误分类样本的权值之和。
(c)计算基本分类器的权重,即在最终分类器中的重要性。由上面(c)中公式可知,当分类误差率时,,且随着的减小而增大,因此分类误差率越小的基本分类器在最终分类器中的作用越大。
(d)更新训练集的权值分布为学习下一个基本分类器作准备。当时,;当时,;由此可知,被基本分类器误分类样本的权值得以扩大,而被正确分类样本的权值却得以缩小。比较两者的权值,发现误分类样本的权值被放大了倍。
步骤(3):线性组合实现个基本分类器的加权表决。系数表示基本分类器的重要性,的和并不为1。的符号决定了实例x的类别,的绝对值表示分类的确信度。
2.2 AdaBoost算法的训练误差分析
AdaBoost最基本的性质是它能在学习过程中不断减少训练误差,即不断减少在训练数据集上的分类误差率。对此,《统计学习方法》中给出了如下定理:
定理1(AdaBoost的训练误差界)AdaBoost算法的训练误差界为
证明过程如下:
该定理说明,可以在每一轮选取适当的使得最小,从而使训练误差下降最快。对于二分类问题,给出了如下定理:
定理2(二分类问题AdaBoost的训练误差界)
其中,
证明过程如下:
推论:结合定理1与定理2,如果存在,对所有的m有,则
这表明在此条件下AdaBoost的训练误差是以指数速率下降的。
2.3 AdaBoost算法的解释
AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分布算法的二分类学习算法。
加法模型可理解为,最终的强分类器是由基本分类器加权平均得到的。
前向分布算法可理解为,在AdaBoost算法中我们利用前一个基本分类器的结果来更新后一个基本分类器的训练集数据权值。假设经过m-1轮的迭代,已经得到强分类器
在第m轮迭代得到和,则
由此可见强分类器是通过前向分布学习算法一步步得到的。
下面介绍AdaBoost的损失函数
2.1节中的基本分类器权重计算公式和样本权值更新公式都可从AdaBoost的损失函数中推导出来。
2.4 AdaBoost算法的正则化
为了防止AdaBoost过拟合,通常也会加入正则化项,这个正则化项被称为步长(learning rate)。记为v,对于前面的基本分类器的迭代
如果加上了正则化项,则有
的取值范围为。对于同样的训练集学习效果,较小的意味着需要更多的基本分类器的迭代次数。通常用步长和迭代最大次数来一起决定算法的拟合效果。
3. 总结
AdaBoost算法的两大特点:
- 特点1:通过迭代,每次学习一个基本分类器;每次迭代中,提高那些被前一轮分类器错误分类的数据的权值,同时降低那些被正确分类的数据的权值;使得误分类样本在下一轮学习中起更大的作用。即不改变所给的训练数据,而是通过不断改变训练数据的权值分布,使得训练数据在基本分类器的学习中起不同的作用。
- 特点2:利用基本分类器的线性组合构建最终分类器。对分类误差率小的基本分类器赋予大的权值,使其在最终的模型中起较大的作用,对分类误差率大的基本分类器赋予小的权值,使其在最终的模型中起较小的作用。
参考
1.《统计学习方法》-李航著