Boosting 族 ——AdaBoost全解

~~~~~ ~~~~~~~~
先从集成学习说起
~~~~~ ~~~~~~~~
机器学习:即由计算机系统处理很多数据建立一个模型,然后用该模型去处理新的数据。

前言:对于传统的机器学习,我们是通过一个学习器去解决问题,而在集成学习里面我们用多个学习器去解决问题。

集成学习(Ensemble methods)
在这里插入图片描述
同质(homogeneous)集成:集成中只包含同种类型的“个体学习器”,相应的算法称为“基学习算法”(base learner algorithm),个体学习器亦称为“基学习器”(base learner)。如决策树集成,神经网络集成

异质(heterogeneous)集成:个体学习器由不同的学习算法生成,不存在基学习算法。

~~~~~ ~~~~~~~~~~~~~
那么如何形成好的集成?
~~~~~ ~~~~~~~~~~~~~

  • 多样的基学习器(好而不同)
    不同的模型取长补短;
  • 反例:相同的学习器不会带来任何提升。

~~~~~ ~~~~~~~~~~~ ~~~~~ ~~~~~~
由此引出集成学习的两个关键步骤!!!
~~~~~ ~~~~~~~~~~~ ~~~~~ ~~~~~~

  • 如何构建不同的基学习器?

  • 如何将基学习器综合起来?

  • 如何构建不同的基学习器?
    (1.)同一训练集,使用不同的算法
    在这里插入图片描述

(2.)相同算法,但使用不同的参数
在这里插入图片描述
(3.)在不同训练集上,使用相同算法
                  典型例子:Boosting(样本加权)
                                    Bagging(重采样)
注:由于采样过程可以视作样本加权的直观体现,而样本加权是AdaBoost 算法的突出特点之一。
在这里插入图片描述

  • 如何将基学习器综合起来?

(1.)平均法 (数值型输出)
a.简单平均法(simple averaging)
b.加权平均(weigtted averaging)

(2.)投票法 (分类任务)
a.每个基学习器具有相同的权重。
b.赋予不同权重的投票

(3.)学习法
训练一个新模型来确定如何综合。典型代表:Stacking.

~~~~~ ~~~~~~~~~~~ ~~~~~ ~~~~~~~~~~~ ~~~~~~~~~
根据个体集成器的生成方式,集成学习方法可分为两大类:
~~~~~ ~~~~~~~~~~~ ~~~~~ ~~~~~~~~~~~ ~~~~~ ~~~~

  • 序列化方法(Sequential methods)

  • AdaBoost                                                   [Freund & Schapire,JCSS97]

  • Arc-xa                                                         [Breiman,AnnStat98]

  • LPBoost                                                     [Demiriz,Bennett,Shawe-Tayior,MLJ06]

  • 并行化方法(Parallel methods)

  • Bagging                                                       [Beiman,MLJ98]

  • Random Subspace                                      [HO,TPAMI98]

  • Random Forests                                           [bREIMAN,MLJ01]

~~~~~ ~~~~~~~~~~~
为什么推荐集成学习?
~~~~~ ~~~~~~~~~~~
集成学习在机器学习竞赛中的广泛应用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
         总结来说:KDD CUP的比赛要拿冠军,一定是用集成的方法

再譬如Netflix Prize,一个网上做电影推荐的比赛。
寻求有效算法从历史信息中准确预测用户对某一电影的喜好程度。要求解决方案比当时Netflix方案提高10%。奖金100万。
           结果09年拿奖的是用集成做的。

~~~~~ ~~~~~~~
Boosting算法族
~~~~~ ~~~~~~~
Boosting是一种提升方法(是一族将弱学习器可提升为强学习器的算法)。
在分类问题中,通过改变训练样本的权重,而不是采用重采样的方法(Bagging),学习多个分类器,并将这些分类器进行线性组合(Ensemble learning),提高分类的性能。

AdaBoost

AdaBoost的起源

来源于一个重要的理论问题
在这里插入图片描述
Kearns & Valiant 在1989年STOC会议上提出一个有趣的问题:弱可学习是否等价于强可学习?
对于机器学习中的PAC(Probably Approximately Correct)可学习问题,给出PAC Model定义如下:
在这里插入图片描述
可学习或强可学习:即存在一个多项式的算法,能够有很大的把握得到一个误差很小的模型。
弱可学习:存在一个多项式,但是只能得到一个比随机猜好一点的模型。

  • 该问题的本质是:是否可通过某一方法把一个弱可学习算法变成为一个强可学习??
  • 1990年 Schapire对其进行了构造性的证明,即第一个Boosting 算法;
  • 1993年 Freund给出了一个改进的Boosting算法,采用的是通过组合多个weakly learner运用投票(分配权重)的方式。
  • 但是, 这两种算法存在共同的实践上的缺陷, 就是都要求事先知道弱学习
    算法学习正确率的下限,直到
  • 1995年 Freund & Schapire提出可实际使用的Adaboost算法,随后一系列boosting算法被提出,形成了一个 boosting family。

AdaBoost的思想
AdaBoost算法是一个自适应地改变训练样本分布的迭代过程,使之后的基分类器聚焦在之前难分的样本上 。
其基本思想为:给定训练集,初始时指定训练集上的分布,即赋予每个样本相同的权值,接着, 调用弱学习算法得到第一个基分类器,再根据该分类器的错误率调整训练样本权重,降低被正确分类的样本权重,提高被错误分类的样本权重 。基于改变的样本分布,继续训练基分类器 。 如此往复,便可得到一组基分类器。

注:由于采样过程可以视作样本加权的直观体现,而样本加权是AdaBoost 算法的突出特点之一。
在这里插入图片描述
流程图理解如下:
在这里插入图片描述
AdaBoost的示例
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为什么AdaBoost影响大?

第一:AdaBoost的算法简单,想法很纯粹,很多领域可以借鉴AdaBoost思想。
如,计算机视觉的人脸识别:
在这里插入图片描述
在这里插入图片描述
第二:AdaBoost不仅仅是简简单单的一个算法,而是发展成一个算法族。是Boosting算法族的核心。
在这里插入图片描述
第三:AdaBoost有很好的理论基础
Freund & Schapire 提出证明,AdaBoost 的训练误差是有界的:
在这里插入图片描述
设训练轮数是T(T个基学器),γt是与T相关的一个数,0.5表示随机猜测,
表示比随机猜测好多少。表示比随机猜测好多少。随着训练轮数T的增加,训练误差将指数级下降,最终趋向于零。

然而 :训练集上的训练误差并不重要,重要的是模型的泛化误差,泛化误差小,才是好的模型!
在这里插入图片描述
设m表示样本大小,d表示模型的复杂度,T是训练轮数。
m越大后一项越小,即泛化误差越小;d越大样本复杂度越大,误差越大;T越大误差也越大。
也就是说,训练轮数T越大,样本复杂度也越大,模型越容易拟合。

但是试验结果显示却不如此,事实上AdaBoost不会随着T的增大而发生过拟合
在这里插入图片描述
如图所示,随着训练轮数的增大,训练误差将趋近于零,然后测试误差却还在下降。换句话说,随着训练轮次的增加,泛化误差越来越小,即模型越复杂算法却越好了。为什么呢?

为此出现两个流派?
在这里插入图片描述
对于二分类问题,我们一般找一个替代函数去替代0-1损失函数,并对替代函数进行优化。

在这里插入图片描述
AdaBoost算法的关键步骤,样本分布函数,它接近于指数损失函数,

在这里插入图片描述
于是考虑用“加性模型”,即基学习器的线性组合,来优化指数函数。

在这里插入图片描述
然而统计学观点并没有给出为什么AdaBoost不Overtting的原因。
从计算机科学家给出的Margin Theory来解释如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
参考资料
[1]《机器学习》课件chap08.pdf 周志华
[2] CCL2014, 周志华PPT《Boosting 25年》
[3]《集成学习》 小象学院
[4] Adaboost 算法的原理与推导 CSDN
[5] Adaboost算法原理分析和实例+代码(简明易懂) CSDN
[6] 数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码) CSDN
[7] Adaboost入门教程——最通俗易懂的原理介绍(图文实例) CSDN
[8] 机器学习物语(4):PAC Learnability
[9] 顺便推荐一个非常实用的在线编辑LaTeX 公式的网页:http://private.codecogs.com/latex/eqneditor.php?lang=zh-cn。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值