• adaboost算法


    Boosting算法是一种把若干个分类器整合为一个分类器的方法,在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合 为一个分类器的方法,即boostrapping方法和bagging方法。我们先简要介绍一下bootstrapping方法和bagging方法。

      1)bootstrapping方法的主要过程

      主要步骤:

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

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

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

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

      2)bagging方法的主要过程 -----bagging可以有多种抽取方法

      主要思路:

      i)训练分类器

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

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

      但是,上述这两种方法,都只是将分类器进行简单的组合,实际上,并没有发挥出分类器组合的威力来。直到1989年,Yoav Freund与 Robert Schapire提出了一种可行的将弱分类器组合为强分类器的方法。并由此而获得了2003年的哥德尔奖(Godel price)。

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

      i)从样本整体集合D中,不放回的随机抽样n1 < n个样本,得到集合 D1

      训练弱分类器C1

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

      训练弱分类器C2

      iii)抽取D样本集合中,C1 和 C2 分类不一致样本,组成D3

      训练弱分类器C3

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

      到了1995年,Freund and schapire提出了现在的adaboost算法,其主要框架可以描述为:

      i)循环迭代多次

      更新样本分布

      寻找当前分布下的最优弱分类器

      计算弱分类器误差率

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

    下面我们举一个简单的例子来看看adaboost的实现过程:

      图中,“+”和“-”分别表示两种类别,在这个过程中,我们使用水平或者垂直的直线作为分类器,来进行分类。

      第一步:

      根据分类的正确率,得到一个新的样本分布D,一个子分类器h1

      其中划圈的样本表示被分错的。在右边的途中,比较大的“+”表示对该样本做了加权。

    也许你对上面的ɛ1,ɑ1怎么算的也不是很理解。下面我们算一下,不要嫌我啰嗦,我最开始就是这样思考的,只有自己把算法演算一遍,你才会真正的懂这个算法的核心,后面我会再次提到这个。

    算法最开始给了一个均匀分布 D 。所以h1 里的每个点的值是0.1。ok,当划分后,有三个点划分错了,根据算法误差表达式得到 误差为分错了的三个点的值之和,所以ɛ1=(0.1+0.1+0.1)=0.3,而ɑ1 根据表达式 的可以算出来为0.42. 然后就根据算法 把分错的点权值变大。如此迭代,最终完成adaboost算法。

      第二步:

      根据分类的正确率,得到一个新的样本分布D3,一个子分类器h2

      第三步:

      得到一个子分类器h3

      整合所有子分类器:

      因此可以得到整合的结果,从结果中看,及时简单的分类器,组合起来也能获得很好的分类效果,在例子中所有的。

  • 相关阅读:
    如何创建html新元素
    jqury如何一次性实现连贯的一系列不同动作?
    jquery论callback事件发生与并列事件发生的区别
    jquery论三种动画停止的区别
    jquery animate多个属性设置为toggle的叠加效果
    如何一个键实现控制一个元素的隐藏和显示?
    jquery中mouseenter,mouseleave与hover的区别用法
    Zabbix探索:工作时间的设置
    Zabbix探索:网络设备监控3
    Zabbix探索:Proxy没有回传任何数据
  • 原文地址:https://www.cnblogs.com/rxingyue/p/5095026.html
Copyright © 2020-2023  润新知