AdaBoost算法
提升方法是基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。通俗点说,就是"三个臭皮匠顶个诸葛亮"。对于分类问题而言,给定一个训练数据,求一个比较粗糙的分类器(即弱分类器)要比求一个精确的分类器(即强分类器)容易得多。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合这些弱分类器,构成一个强分类器。
关于第一个问题,AdaBoost的做法是,提高那些被前几轮弱分类器线性组成的分类器错误分类的的样本的权值。这样一来,那些没有得到正确分类的数据,由于权值加大而受到后一轮的弱分类器的更大关注。于是,分类问题被一系列的弱分类器”分而治之”。至于第二个问题,AdaBoost采取加权多数表决的方法。具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
算法的具体步骤:
(1)初始化训练数据的权值分布
(2)对于m=1,2,3......,M
(a)使用具有权值分布的训练数据集学习,得到基本分类器
(b)计算在训练数据集上的分类误差率
(c)计算的系数
(d)更新训练数据集的权值分布
这里是规范化因子
(3)构建基本分类器的线性组合
(4)得到最终的分类器:
具体例子可以参考《统计学习方法》第八章内容或Python代码
算法的训练误差分析:
AdaBoost最基本的性质是它能在学习过程中不断减少训练误差,关于这个问题有下面的两个定理:
定理1:(AdaBoost的训练误差界)
定理的证明可见《统计学习方法》P142
定理2:(二类分类问题AdaBoost的训练误差界)
定理的证明可见《统计学习方法》P143
最后,我们得到推论:
这表明在此条件下,AdaBoost的训练误差是以指数速率下降的。这一性质当然是很有吸引力的。
注意,AdaBoost算法不需要知道下界。这正是Freund与Schapire设计AdaBoost时所考虑的。与一些早期的提升方法不同,AdaBoost具有适应性,即它能适应弱分类器各自的训练误差率。这也是它名称的由来,Ada是Adaptive的简写。
算法的优缺点:
Adaboost的主要优点有:
1)Adaboost作为分类器时,分类精度很高
2)在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
3)作为简单的二元分类器时,构造简单,结果可理解。
4)不容易发生过拟合
Adaboost的主要缺点有:
1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性
参考:https://www.jianshu.com/p/b3f189767ad3