• boosting、adaboost


    1、boosting

    Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。他是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。

    在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合为一个分类器的方法,即boostrapping方法和bagging方法。

    1.1 bootstrapping方法的主要过程

    i)重复地从一个样本集合D中采样n个样本

    ii)针对每次采样的子样本集,进行统计学习,获得假设Hi

    iii)将若干个假设进行组合,形成最终的假设Hfinal

    iv)将最终的假设用于具体的分类任务

    1.2 bagging方法的主要过程

    i)训练分类器 从整体样本集合中,抽样n* < N个样本 针对抽样的集合训练分类器Ci

    ii)分类器进行投票,最终的结果是分类器投票的优胜结果

    但是,上述这两种方法,都只是将分类器进行简单的组合,实际上,并没有发挥出分类器组合的威力来。直到1989年,Yoav Freund与 Robert Schapire提出了一种可行的将弱分类器组合为强分类器的方法。

    Schapire还提出了一种早期的boosting算法,其主要过程如下:

    i)从样本整体集合D中,不放回的随机抽样n1 < n个样本,得到集合 D1 训练弱分类器C1

    ii)从样本整体集合D中,抽取 n2 < n个样本,其中合并进一半被C1 分类错误的样本。得到样本集合 D2 训练弱分类器C2

    iii)抽取D样本集合中,C1C2 分类不一致样本,组成D3 训练弱分类器C3

    iv)用三个分类器做投票,得到最后分类结果

    到了1995年,Freund and schapire提出了现在的adaboost算法。

    2、adaboost

    主要框架可以描述为:

    i)循环迭代多次,更新样本分布,寻找当前分布下的最优弱分类器,计算弱分类器误差率

    ii)聚合多次训练的弱分类器

    image

    现在,boost算法有了很大的发展,出现了很多的其他boost算法,例如:logitboost算法,gentleboost算法等。

    3、adaboost的收敛性证明

    整个证明的核心是:

    frac{1}{m}|i:H(x_{i})
eq{y_{i}}|leqprod_{t=1}^{T}Z_{t},其中m表示样本总数,T表示弱分类器的总数,Z_{t}为每一级弱分类器的错误率。

    证明过程:

    frac{frac{1}{m}|i:H(x_{i})
eq{y_{i}}|}{prod_{t=1}^{T}Z_{t}}
leqfrac{exp(-sum_{t=1}^{T}alpha_{t}y_{i}h_{t}(x_{i}))}{mprod_{t=1}^{T}Z_{t}}

=frac{exp(-y_{i}f(x_{i}))}{mprod_{t=1}^{T}Z_{t}}
=D_{T+1}(i)

    如果H(x_{i})
eq{y_{i}}y_{i}f(x_{i})leq0,故exp(y_{i}f(x_{i}))geq1。所以得到上式子。

    image

    至此,看到AdaBoost的错误率上限,接下来的目标就是使这个上限尽可能小!

    在原始AdaBoost算法中h值域是{-1,1},问题是怎么找到最佳的alpha_{t}

    image

    对于原始的AdaBoost,前文讨论过其h是“定死”的,失去了“讨价还价”的余地,而在Real AdaBoost不在“定死”。

    推导过程ppt下载

    参考:http://blog.163.com/f_rock/blog/static/1947961312011102810164354/

    4、gentle adaboost

    参考:http://blog.csdn.net/wsj998689aa/article/details/42652827

  • 相关阅读:
    描述cookies,sessionStorage和localStorage的区别
    利用Vue+ElementUi实现评论功能
    什么是盒子模型?
    个人认为比较干的博客帖子,长期维护更新
    problems_starter
    knowledge_starter
    删除某个目录下所有文件中的所有空行的最简单方法sed
    vscode快捷键备忘录
    C语言程序编译和运行,看这一篇就够了
    spring security坑1:通过code获取token报错
  • 原文地址:https://www.cnblogs.com/houkai/p/4863406.html
Copyright © 2020-2023  润新知