AdaBoost--从原理到实现

来源:互联网 发布:网络调研公司排名 编辑:程序博客网 时间:2024/05/17 01:44

一.引入

         对于Adaboost,可以说是久闻大名,据说在Deep Learning出来之前,SVM和Adaboost是效果最好的 两个算法,而Adaboost是提升树(boosting tree),所谓“提升树”就是把“弱学习算法”提升(boost)为“强学习算法”(语自《统计学习方法》),而其中最具代表性的也就是Adaboost了,貌似Adaboost的结构还和Neural Network有几分神似,我倒没有深究过,不知道是不是有什么干货

二.过程

        (from PRML)

         这就是Adaboost的结构,最后的分类器YM是由数个弱分类器(weak classifier)组合而成的,相当于最后m个弱分类器来投票决定分类,而且每个弱分类器的“话语权”α不一样。

         这里阐述下算法的具体过程:

  具体说来,整个Adaboost 迭代算法就3步:

  1. 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权重:1/N。
  2. 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。然后,权重更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
  3. 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

     1.初始化所有训练样例的权重为1 / N,其中N是样例数

             2.for m=1,……M:

                   a).训练弱分类器ym(),使其最小化权重误差函数(weighted error function)

                                                   

                   b)接下来计算该弱分类器的话语权α:

                                                     

                   c)更新权重:

                                               

                                 其中Zm:

                                                     

                                 是规范化因子,使所有w的和为1。(这里公式稍微有点乱)

                 3.得到最后的分类器:

                                  


原创粉丝点击