Adaboost

冷暖自知 提交于 2020-03-07 19:34:49

Boosting提升方法(源自统计学习方法)

         提升方法是一种常用的统计学习方法,应用十分广泛且有效。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。提升算法基于这样一种思路:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家独断的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
         历史上,Kearns和Valiant首先提出了“强可学习(Strongly learnable)”和“弱可学习(Weekly learnable)”的概念。支出:在概率近似正确(probably approximately correct,PAC)学习框架中,一个概念(一个分类),如果存在一个多项式的学习算法能够学习它,并且正确率很好,那么就称这个概念是强可学习的;一个概念(一个分类),如果存在一个多项式的学习算法能够学习它,但学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。非常有趣的是Schapire后来证明强可学习与弱可学习是等价的,也就是说,在PAC学习框架下,一个概念是强可学习的充要条件是这个概念是弱可学习的。
         这样一来,问题便成为,在学习中,如果已经发现了“弱学习算法”,那么能否将它提升(boost)为“强学习算法”。大家知道,发现弱学习算法通常要比发现强学习算法容易得多。那么如何具体实施提升,便成为开发提升方法时所要解决的问题。关于提升方法的研究很多,有很多算法被提出,最具代表性的是Adaboost算法(Adaboost algorithm)。
         对与分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易得多。提升方法就是从弱学习算法出发,反复学习,得到一系列分类器,然后组合这些分类器,构成一个强分类器。
         这样,对于提升算法来说,有两个问题需要回答:一是在每一轮如何改变训练数据的权值分布;二是如何将弱分类器组合成一个强分类器。
         Boosting算法要涉及到两个部分,加法模型和前向分步算法
         (1) 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: FM(x;P)=∑nm=1αmh(x;θm)FM(x;P)=∑m=1nαmh(x;θm) 其中h(x;θm)h(x;θm)是一个个的弱分类器,θmθm是弱分类器学习到的最优参数;αmαm就是若学习在强分类器中所占的比重;PP是所有αmαm和θmθm的组合。这些弱分类器线性相加组成强分类器。
         (2) 前向分布就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以协成这样的形式: Fm(x)=Fm−1(x)+αmh(x;θm)Fm(x)=Fm−1(x)+αmh(x;θm)
         由于采用的损失函数不同,Boosting算法也因此有了不同的类型,AdaBoost就是损失函数为指数损失的Boosting算法。

Adaboost算法

Adaboost算法思想:

  1. 提高那些被前一轮弱分类器错误分类的样本的权值,降低那些被正确分类的样本的权值;
  2. 采用加权多数表决的方法。具体的,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用;减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

Adaboost算法流程:
        该算法其实是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据的分类能力。整个过程如下所示:

  1. 先通过对N个训练样本的学习得到第一个弱分类器;
  2. 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器 ;
  3. 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;
  4. 最终经过提升的强分类器。即某个数据被分为哪一类要由各分类器权值决定。
    由Adaboost算法的描述过程可知,该算法在实现过程中根据训练集的大小初始化样本权值,使其满足均匀分布,在后续操作中通过公式来改变和规范化算法迭代后样本的权值。样本被错误分类导致权值增大,反之权值相应减小,这表示被错分的训练样本集包括一个更高的权重。这就会使在下轮时训练样本集更注重于难以识别的样本,针对被错分样本的进一步学习来得到下一个弱分类器,直到样本被正确分类。在达到规定的迭代次数或者预期的误差率时,则强分类器构建完成。

Aadboost算法特点
        Aadboost 算法系统具有较高的检测速率,且不易出现过适应现象。但是该算法在实现过程中为取得更高的检测精度则需要较大的训练样本集,在每次迭代过程中,训练一个弱分类器则对应该样本集中的每一个样本,每个样本具有很多特征,因此从庞大的特征中训练得到最优弱分类器的计算量增大。典型的 Adaboost 算法采用的搜索机制是 回溯法,虽然在训练弱分类器时每一次都是由贪心算法来获得局部最佳弱分类器,但是却不能确保选择出来加权后的是整体最佳。在选择具有最小误差的弱分类器之后,对每个样本的权值进行更新,增大错误分类的样本对应的权值,相对地减小被正确分类的样本权重。且执行效果依赖于弱分类器的选择,搜索时间随之增加,故训练过程使得整个系统的所用时间非常大,也因此限制了该算法的广泛应用。另一方面,在算法实现过程中,从检测率和对正样本的误识率两个方面向预期值逐渐逼近来构造级联分类器,迭代训练生成大量的弱分类器后才能实现这一构造过程。由此推出循环逼近的训练分类器需要消耗更多的时间。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!