机器学习:提升方法AdaBoost算法

AdaBoost算法是提升方法中具有代表性的一种算法,本篇博文主要学习AdaBoost的算法思想以及从前向分步加法模型的角度来解释AdaBoost算法。

1、AdaBoost算法思路

对于提升方法来说,其基本思路是从弱学习算法出发,反复学习,得到一系列弱分类器(基分类器),然后组合这些弱分类器,构成一个强分类。大多数提升方法都是改变训练数据的概率分布或权值分布,针对不同训练数据分布调用弱学习算法学习一系列弱分类器,那么如何改变训练数据的权值或概率分布,如何将弱分类器组合为强分类器,就是提升方法所要解决的两个关键问题。

如何改变训练数据的权值或概率分布? 

AdaBoost算法的解决方法是,提高那些被前一轮弱分类器错误分类的样本的权值,降低分类正确的样本的权值,这样分类错误的样本在下一轮弱分类器的训练中会受到更大的关注;

如何将一系列弱分类器组合为强分类器? 

AdaBoost算法采用加权多数表决的方法来加大分类误差率较小的弱分类器的权值,使其在表决中起到较大的作用,反之,分类误差率较大的弱分类器给予较小的表决权值。

2、AdaBoost算法

设二类分类训练数据集,其中;
设初始化训练数据的权值分布

算法步骤:
输入:训练数据集;弱学习算法;
输出:强分类器。
1)初始化训练数据集的权值分布

2)

  • a)使用有权值分布Dm的训练数据集学习,得到基分类器
  • b)计算在训练集上的分类误差率
  • c)计算的系数
  • d)更新训练数据集的权值分布
    这里是规范化因子

    它使称为一个概率分布。
  • 3)构建基本分类器的线性组合

    得到最终分类器

    根据第二步的第d)小步,可以计算出,五分类样本的权值被放大倍,因此误分类样本在下一轮训练中起到更大的作用。不改变所给的训练数据,而不断改变训练数据的权值分布,使得训练数据在基本分类器的学习中起不同的作用,这是AdaBoost的一个特点。
    对于AdaBoost的举例介绍,在李航的《统计学习方法》中给出了经典的例子,现在网上大多数例子都是来自这本书,这里不再赘述。

    3、AdaBoost算法解释

    AdaBoost 的另一种解释是,AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二分类学习方法
    前向分步算法求解加法模型损失函数极小化问题的想法是:因为学习的是加法模型,如果能从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数,那么就可以减少优化的复杂度。
    AdaBoost算法是前向分步算法的特例,这时,模型是基本分类器组成的加法模型,损失函数是指数函数。这个证明过程就不在这里详述了。
    总结:
    1)AdaBoost算法可以看做是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二分类学习方法;
    2)AdaBoost算法的训练误差是以指数速率下降的;
    3)AdaBoost算法不需要事先知道下界,具有自适应性,它能自适应弱分类器的训练误差率;
    4)优点:泛化能力强,易编码,可用在绝大部分分类器上,无参数调整;缺点:对离群点敏感。

    你可能感兴趣的:(机器学习:提升方法AdaBoost算法)