AdaBoost算法原理详解

Boosting提升算法

    Boosting算法是将“弱学习算法”提升为“强学习算法”的过程,最具有代表性的是AdaBoost算法。Boosting提升算法思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个单独判断的好;相当于“三个臭皮匠顶个诸葛亮”。一般来说,提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(基本分类器),组合这些弱分类器得到一个强分类器。

AdaBoost算法介绍

    AdaBoost是Boosting方法中代表性的算法。该方法在每轮的迭代过程中降低分类正确的样例的权重,提高分类错误的样例的权重,使得分类器在迭代过程中逐步改善,最终将所有分类器线性组合得到一个强分类器。Boost算法框架如下图所示:
图1 Boost分类框架(来自PRML)

AdaBoost算法过程

    (1).初始化训练数据集的权值分布,共有N个训练样例。

    (2).进行M轮迭代学习,第m轮学习过程如下:

        (a).使用具有权值分布Dm的训练数据集学习,得到基本分类器Gm;

        (b).计算Gm在训练数据集上的分类误差率em:


        (c).计算Gm的权重系数:


       (d).更新训练样例的权重系数:


        (e).重复(a)~(d).得到一系列的权重参数am和基分类器Gm;

    (3).将上一步得到的基分类器根据权重参数线性组合,得到最终分类器:


算法中的两个权重分析

  (1).关于基分类器权重的分析:


        上面计算的am表示基分类器在最终的分类器中所占的权重,am的计算根据em而得到,由于每个基分类器的分类性能要好于随机分类器,故而误差率em<0.5.(对二分类问题)当em<0.5时,am>0且am随着em的减小而增大,所以,分类误差率越小的基分类器在最终的分类器中所占的权重越大。

(2).训练样例的权重分析:

    

        根据公式可知,由于am>0,故而exp(-am)<1,当样例被基本分类器正确分类时,其权重在减小,反之权重在增大。通过增大错分样例的权重,让此样例在下一轮的分类器中被重点关注,通过这种方式,慢慢减小了分错样例数目,使得基分类器性能逐步改善。


算法中的训练误差分析

       关于误差上界有以下不等式,此不等式说明了AdaBoost的训练误差是以指数的速度下降的。



AdaBoost算法推导过程

        AdaBoost算法使用加法模型,损失函数为指数函数,学习算法使用的前向分布算法。

其中加法模型为:


损失函数为指数函数:


假设已经经过m-1轮迭代,得到Fm-1(x),根据前向分步,我们可以得到:


已知AdaBoost是采用指数损失,由此可以得到损失函数:

化简之后的损失函数,接下来对损失函数求导,对am求偏导如下:


参考文献:

【1】李航,统计学习

猜你喜欢

转载自blog.csdn.net/yb1020368306/article/details/80985480
今日推荐