统计学习方法学习笔记《八》——Boosting方法

引言

        提升(Boosting)方法是一种常用的统计学习方法,应用广泛且有效,在分类问题中,通过改变训练样本的权重,而不是采用重采样的方法(Bagging),学习多个分类器,并将这些分类器进行线性组合(Ensemble learning),提高分类的性能。

AdaBoost的起源

        在介绍AdaBoost算法前,我们先看一个在机器学习里很出名的问题:

上面问题中涉及到机器学习中的PAC(Probably Approximately Correct)可学习性问题,下面给出PAC Model的定义:

这个问题所描述的就是,一个仅仅比随机分类好的弱学习算法能否被提升到强学习的可能性?正是这个问题,才使boost & adaboost 逐渐地被提出和改进:
        1984年 Valiant提出PAC可学习性模型
        1988年 Valiant的学生Kearns提出问题,weakly learner能否变成strongly learner
        1990年 Schapire给出了确定的答案,并提出了第一个Boosting 算法
        1993年 Freund给出了一个改进的Boosting算法,采用的是通过组合多个weakly learner运用投票(分配权重)的方式
        因为以上提出的boosting算法都有缺陷导致往往不能用于解决实际问题中,最主要问题就是需要预先知道所有weakly learner 的正确下限和误差,而这个条件通常很难满足,因此adaboost算法应运而生。
        1995年 Freund & Schapire提出了非常出名的Adaboost算法,随后一些列boosting算法被提出,形成了一个 boosting family

Adaboost算法

        adaboost算法是通过组合一系列弱分类器构成一个强分类器,在学习过程中,通过改变训练数据的概率分布,得到一些列弱分类器。这样对adaboost算法就有两个问题需要解决:(1)在每一轮如何改变训练数据的权值或概率分布;(2)如何将弱分类器组合成一个强分类器。关于第一个问题,AdaBoost的做法是,提高那些被前一轮弱分类错误分类的样本权值,而降低那些被正确分类的样本权值,这样一来,那些没有得到正确分类的数据,由于其权值的加大而受到后一轮弱分类器的更大关注,于是,分类问题被一系列的弱分类器“分而治之”。至于第二个问题,即分类器的组合,AdaBoost采取加权多数表决的方式,具体的,加大分类误差小的弱分类器的组合,使其在表决中起较大作用,反之,减少分类误差小的弱分类器的组合。AdaBoost的巧妙之处就在于它将这些想法自然而然地实现在这一算法中。
        读了很多文献,个人觉得AdaBoost算法本质就是在一次又一次的循环中提高对训练数据的误差率,然而他不是单纯的根据某一个特征进行判别,而是将所有特征结合一起投票考虑最后结果,当训练数据具有代表性,离群点较少的话,最后得出的分类器我觉得更像是一个所有特征整体的constrained structure,当中似乎有PCA的思想在里面,因此在深入探究其是否会过拟合的过程中,我当时的观点是Adaboost应该不大可能会出现过拟合的现象,而确实在阅读文献中,刚好印证了我这一想法,原来关于AdaBoost在实际应用中是否过拟合已经产生了专门的研究问题,Statistical View & Margin Theory这两个理论通常用于解释为什么AdaBoost不会产生过拟合了。

        AdaBoost的代码很简单,因为它给出的其实是一个boost框架,针对实际问题,调整alpha(t)和分布D(t)。下面给出常见的adaboost伪代码:
统计学习方法学习笔记《八》——Boosting方法_第1张图片
Adaboost有很多其他的变种,都是在alpha(t)和D(t)上做文章,逐渐发展成为了一系列boosting family算法:

AdaBoost算法续

        在统计学习方法一书中,认为AdaBoost算法是模型为加法模型,损失函数为指数函数,学习算法为前向分布算法时的一类分类学习算法。其中还提到了Boosting Tree Model,提升方法实际采用加法模型与前向分布算法,以决策树为基函数的提升方法称为提升树。针对不同问题的提升树学习算法,其主要区别在于使用的损失函数不同,包括平方误差损失函数的回归问题,指数损失函数的分类问题,以及用一般损失函数的一般决策问题(梯度下降)。

参考资料

[1]《A Desicion-Theoretic Generalization of On-Line Learning and an Application to Boosting》

[2]《Experiments with a New Boosting Algorithm》

[3]《A Brief Introduction to Boosting》

[4]《AdaBoost and the Super Bowl of Classifiers A Tutorial Introduction to Adaptive Boosting》

[5] 《统计学习方法》Chapter 8

[6]   http://blog.pluskid.org/?p=821

[7]  CCL2014, 周志华PPT《Boosting 25年》



你可能感兴趣的:(机器学习,adaboost,统计学)