zoukankan      html  css  js  c++  java
  • AdaBoost 算法简介


    1、算法简介:

           AdaBoost(Adaptive Boosting)算法是一种原理简单的有监督的机器学习算法。它的发展与一个非常有趣的理论有关,即强学习算法与弱学习算法的等价性问题,能否使用弱分类器和多个实例来构建一个强分类器。这里的“弱”是指分类器的性能比随机猜测略好,但也不会好太多;而“强”是指识别错误率很高并能在多项式时间内完成。可以分析的是,如果以上猜想成立,即二者等价,那么只需找到一个弱分类器,就可以构建出我们所期望的强分类器。AdaBoost算法正是脱胎于以上理论。而本文介绍的知识最流行的一个版本的AdaBoost。

    2、原理介绍:

           AdaBoost算法是基于迭代思想,针对同一个训练集,训练不同的弱分类器,然后统筹各个弱分类器的结果,构成一个强分类器。

    其具体实现是这样的:首先对于训练数据的每个样本,会分配一个权重(权重和为1,初始化为相等值,每个样本的权重会随训练过程而改变),对于每次的弱分类器的训练,该分类器会对样本产生相应的预测值,进一步的基于权重求和得到错误率(预测错误的样本的权重和),基于错误率会计算得到该若分类器在最后的强分类器的权重,错误率越高,其权重自然越低,计算公式下文会具体说明。而以上说到的样本的权重,会在每次预测之后加以修改,算法降低分类正确的样本的权重,而提高分类错误的样本的权重。几个关键的需要注意的因素就是每次训练中样本权重向量的计算更新(下文会说明更新方式),每个弱分类器的分类错误率,每个弱分类器在最终强分类器的比重

       AdaBoost算法不断重复训练,每次更新权重向量直到训练错误率为0或弱分类器数目达到用户指定值为止。

    3、算法实现:

    1)给定训练集:,其中 ,表示(样本特征向量)的正确的类别标签,

    2)初始化样本权重向量:

    3)寻找弱分类器

    对于每个样本中的第j个特征,可以得到一个弱分类器,即可得到阈值和方向,使得达到最小,而弱分类器为:



    其中决定不等式的方向, 只有+1和-1两种情况

    4)将所有特征(j)中挑选出一个具有最小误差的弱分类器,即为本轮训练中所需要的弱分类器,计算该弱分类器在最终的强分类器中所占的权重:



    5)对所有的样本权重进行更新:



    其中是归一化因子,使

    对于上式进一步说明,我们前面提到,对于正确分类的样本会降低其权重,错误分类的样本会增大其权重,通过以上式子即可实现。注意到对于分类正确的样本,分类错误的样本,则对于正确的样本有:



    错误的样本有:



    经分析知道,分别可以达到降低与增大权重的效果。


    6)重复以上步骤直到算法终止,得到每轮训练中最优的弱分类器,此时基于每次迭代的弱分类器及其权重组成一个强分类器:



    至此算法步骤描述完毕。

    4、算法分析

    AdaBoost算法的优点可以概括如下:

    泛化错误率低,即分类准确度较高;容易编码实现;可以应用于大部分分类器上,其子分类器可以是任意分类器,而AdaBoost只是基于子分类器搭建的框架。

    然而另一方面,AdaBoost也存在对离群点敏感的问题。

    AdaBoost主要应用解决:两类问题、多类单标签问题、多类多标签问题、大类单标签问题,回归问题。





  • 相关阅读:
    nyoj 139 我排第几个--康拓展开
    树形dp--hdu 3534 Tree
    hdu 2196 Computer 树形dp模板题
    poj 2342 Anniversary party 简单树形dp
    hdu 4738 Caocao's Bridges 图--桥的判断模板
    poj 1144 Network 图的割顶判断模板
    poj 3159 Candies 差分约束
    poj 3169 Layout 差分约束模板题
    codeforces C. Triangle
    java中过滤器、监听器、拦截器的区别
  • 原文地址:https://www.cnblogs.com/f8master/p/3826078.html
Copyright © 2011-2022 走看看