机器学习十大算法-Boosting(机器学习十大算法)


cmwxj@126.com
2019-12-27 11:02:36 (5年前)
Boosting

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

一、Boosting算法的发展历史


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


  1)bootstrapping方法的主要过程


  主要步骤:


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


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


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


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


  2)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的实现过程:



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


  第一步:





第二步:



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


第三步:







0 条回复
  1. 动动手指,沙发就是你的了!
登录 后才能参与评论