adaBoost算法-分类

一、boosting与adaBoost的区别:
         boosting 是一种将 弱分类器转化为强分类器的方法统称
          而 adaboost其中的一种,采用了exponential loss function(指数损失函数),根据不同的loss function还可以有其他算法,例如:logitboost算法,gentleboost算法等

二、adaBoost算法
       Adaboost是提升树(boosting tree),所谓“提升树”就是把“弱学习算法”提升(boost)为“强学习算法”(语自《统计学习方法》),而其中最具代表性的也就是Adaboost了,貌似Adaboost的结构还和Neural Network有几分神似......

      弱分类器---识别错误率小于1/2 (即准确率仅比随机猜测略高的学习算法)

    强分类器---识别准确率很高并能在多项式时间内完成的学习算法,输出结果几乎接近完全正确的分类。

       Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器分类器),然后把这些弱分类器集合起来。构成一个更强大的最终分类器(分类器)。
    
Adaboost算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过的新数据集送给下层分类器进行训练,最后将每次得到的分类器最后融合起来,作为最后的决策分类器。

      AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在 每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。
 2.1 Adaboost 迭代算法就3步:
  1. 初始化训练数据的权值分布。如果有N个样本(正负样本和),则每一个训练样本最开始时都被赋予相同的权值:1/N。
  2. 训练弱分类器。具体训练过程中,对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就是被突显出来,从而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。依次类推,经过T次循环,得到T个弱分类器。
  3. 将 各个训练得到的弱分类器组合成强分类器。把这T个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。误差率低的弱分类器在最终分类器中占的权重较大,否则较小。
2.2 举一个简单的例子来看看adaboost的实现过程:
adaBoost算法-分类_第1张图片
图中,“+”和“-”分别表示两种类别,在这个过程中,我们使用水平或者垂直的直线作为分类器,来进行分类 D1指样本集
第一步:
adaBoost算法-分类_第2张图片
解释

adaBoost算法-分类_第3张图片

第二步:

  adaBoost算法-分类_第4张图片
解释
adaBoost算法-分类_第5张图片

第三步:
   
adaBoost算法-分类_第6张图片
解释
adaBoost算法-分类_第7张图片

整合所有子分类器:得到一个强分类器
    adaBoost算法-分类_第8张图片

、备注:
adaBoost算法-分类_第9张图片

2.3 算法的优点

1)adaboost是一种有很高精度的分类器

2)可以使用各种方法构建子分类器,adaboost算法提供的是框架

3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单

4)简单,不用做特征筛选

5)不用担心overfitting!


Adaboost算法的某些特性是非常好的,在我们的报告中,主要介绍adaboost的两个特性。

一是训练的错误率上界,随着迭代次数的增加,会逐渐下降;

二是adaboost算法即使训练次数很多,也不会出现过拟合的问题

http://baidutech.blog.51cto.com/4114344/743809/   (证明参考该文献)

需要大样本数据进行训练,训练时间长,准确率高。

adaBoost算法-分类_第10张图片


你可能感兴趣的:(机器学习)