Adaboost 算法介绍

微信公众号:芥子观须弥

1. Adaboost简介

1.1 集成学习(ensemble learning)背景介绍

集成学习(ensemble learning)通过构建并结合多个学习器(learner)来完成学习任务,通常可获得比单一学习器更良好的泛化性能(特别是在集成弱学习器(weak learner)时)。

目前集成学习主要分为2大类:

一类是以bagging、Random Forest等算法为代表的,各个学习器之间相互独立、可同时生成的并行化方法;

一类是以boosting、Adaboost等算法为代表的,个体学习器是串行序列化生成的、具有依赖关系,它试图不断增强单个学习器的学习能力。

1.2 Adaboost背景介绍

Adaboost是Yoav Freund和Robert Schapire在1997年提出的一种集成学习(ensemble learning)算法。

此前也Schapire也曾提出了一种boosting算法(Schapire’s Boosting ),但实际应用效果并不好,主要原因是因为Schapire’s Boosting 对于训练集样本的选取条件十分精确而又苛刻,以至于很难找出符合条件的训练集。而Adaboost在选取样本的时候采用了基于概率分布(也可解释为基于权值)来选取样本的方法,相比Schapire’s Boosting 放宽了对于训练样本选取的要求。

2. Adaboost 算法详解

2.1 Adaboost 步骤概览

​ ① 初始化训练样本的权值分布,每个训练样本的权值应该相等(如果一共有N个样本,则每个样本的权值为1/N)

​ ② 依次构造训练集并训练弱分类器。如果一个样本被准确分类,那么它的权值在下一个训练集中就会降低;相反,如果它被分类错误,那么它在下个训练集中的权值就会提高。权值更新过后的训练集会用于训练下一个分类器。

​ ③ 将训练好的弱分类器集成为一个强分类器,误差率小的弱分类器会在最终的强分类器里占据更大的权重,否则较小。

2.2 Adaboost 算法流程

给定一个样本数量为m的数据集T=
\left \{\left(x_{1}, y_{1}\right), \ldots,\left(x_{m}, y_{m}\right) \right \}
yi 属于标记集合{-1,+1}。

训练集的在第k个弱学习器的输出权重为
D(k)=\left(w_{k 1}, w_{k 2}, \ldots w_{k m}\right) ; \quad w_{1 i}=\frac{1}{m} ; i=1,2 \ldots m
​ ① 初始化训练样本的权值分布,每个训练样本的权值相同:
D(1)=\left(w_{1 1}, w_{1 2}, \ldots w_{1 m}\right) ; \quad w_{1 i}=\frac{1}{m} ; i=1,2 \ldots m
​ ② 进行多轮迭代,产生T个弱分类器。

​ for t = 1, ... , T :

​ a. 使用权值分布 D(t) 的训练集进行训练,得到一个弱分类器
G_{t}(x) : \quad \chi \rightarrow\{-1,+1\}
​ b. 计算 Gt(x) 在训练数据集上的分类误差率(其实就是被 Gt(x) 误分类样本的权值之和):
e_{t}=P\left(G_{t}\left(x_{i}\right) \neq y_{i}\right)=\sum_{i=1}^{m} w_{t i} I\left(G_{t}\left(x_{i}\right) \neq y_{i}\right)
​ c. 计算弱分类器 Gt(x) 在最终分类器中的系数(即所占权重)
\alpha_{t}=\frac{1}{2} \ln \frac{1-e_{t}}{e_{t}}
​ d. 更新训练数据集的权值分布,用于下一轮(t+1)迭代
D(t+1)=\left(w_{t+1,1} ,w_{t+1,2} ,\cdots w_{t+1, i} \cdots, w_{t+1, m}\right)
​ for i = 1, ... , m:
w_{t+1,i}=\frac{w_{t,i}}{Z_{t}} \times \left\{\begin{array}{ll}{e^{-\alpha_{t}}} & {\text ({ if } G_{t}\left(x_{i}\right)=y_{i}}) \\ {e^{\alpha_{t}}} & {\text ({ if } G_{t}\left(x_{i}\right) \neq y_{i}})\end{array}\right. = \frac{w_{t,i}}{Z_{t}} \exp \left(-\alpha_{t} y_{i} G_{t}\left(x_{i}\right)\right)
​ 其中 Zt是规范化因子,使得D(t+1)成为一个概率分布(和为1):
Z_{t}=\sum_{j=1}^{m} w_{t,i} \exp \left(-\alpha_{t} y_{i} G_{t}\left(x_{i}\right)\right)
​ ③ 集成T个弱分类器为1个最终的强分类器:
G(x)=\operatorname{sign}\left(\sum_{t=1}^{T} \alpha_{t} G_{t}(x)\right)

2.3 权值更新过程举例说明

用一个例子阐释上面所说的权值更新过程:

给定一个数据集T,由10个训练样本组成:x1,x2 ,…,x10,整个训练集样本总数 m=10。初始权重设置为
\quad w_{1 i}=\frac{1}{m}=0.1


练出第一个弱分类器G1(对于无法接受带权样本的基学习算法,可以通过重采样resampling来处理,后面会举例介绍一下)。假设分类器G1在数据集T上的效果为:正确分类出样本 x1 - x7,将样本 x8 - x10 错误分类。我们可以计算出赋权后的误差率:

可以求出系数 α1 = 0.424,

根据上面 ②-d 步骤我们可以得出新的权值(还未规范化):

经过规范化因子规范化后的权值分布(和为1):

下一个分类器从此分布中产生。

3. 注意要点

(1)分类器的权重系数 α 实际上是通过最小化指数损失函数的得到的,如果想了解 α 的 推导过程可以参考 Schapire 论文原文或者周志华《机器学习》8.2节内容。

(2)对于无法接受带权样本的基学习算法,可以通过重采样resampling来产生训练集,这也是为什么之前说Adaboost可以理解为基于概率分布来选取样本。拿上面的例子来说,详细做法是:10个样本中每个样本被抽中的概率是Pi(i=1,...,10),现在按抽取概率连续做10次可放回的样本抽取,得到训练集即可训练出一个分类器。

(3)adaboost的灵魂在于其样本权重更新(样本权重模拟了概率分布)的方法 以及 弱分类器加权组合

4. 相关面试题

(1)简述一下 Adaboost 的权值更新方法。

​ 答:参考上面的算法介绍。

(2)训练过程中,每轮训练一直存在分类错误的问题,整个Adaboost却能快速收敛,为何?

​ 答:每轮训练结束后,AdaBoost 会对样本的权重进行调整,调整的结果是越到后面被错误分类的样本权重会越高。而后面的分类器为了达到较低的带权分类误差,会把样本权重高的样本分类正确。这样造成的结果是,虽然每个弱分类器可能都有分错的样本,然而整个 AdaBoost 却能保证对每个样本进行正确分类,从而实现快速收敛。

(3) Adaboost 的优缺点?

​ 答:优点:能够基于泛化性能相当弱的的学习器构建出很强的集成,不容易发生过拟合。

​ 缺点:对异常样本比较敏感,异常样本在迭代过程中会获得较高的权值,影响最终学习器的性能表现。

(4)AdaBoost 与 GBDT 对比有什么不同?

​ 答:区别在于两者boosting的策略:Adaboost通过不断修改权重、不断加入弱分类器进行boosting;GBDT通过不断在负梯度方向上加入新的树进行boosting。

参考资料:

  1. 台湾清华大学李端兴教授2017年秋机器学习概论课程(CS 4602)PPT

  2. 周志华 《机器学习》第8章 集成学习

  3. July的博客

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

  • 1. Boosting Boosting(提升方法)是将弱学习器算法提升为强学习算法的统计学习方法。在分类问题中,...
    songsong_H阅读 1,593评论 1 1
  • 转载自 http://www.52caml.com/head_first_ml/ml-chapter6-boost...
    麒麟楚庄王阅读 2,382评论 1 3
  • 内容 一、Adaboost简介 二、Adaboost算法过程 三、Adaboost算法的训练误差分析 四、Adab...
    小小orange阅读 1,618评论 0 7
  • 2018.3.19 星期一 晴 老公今天说为了让我轻松一下,想把妞妞接过去照顾一段时间。 我这就开...
    e137b32b4680阅读 144评论 0 1
  • 每个人都不是一无是处的,每个人都有他(她)生存的价值,所以,我们不要去随意的评价任何人,更不要瞧不起任何人! 我是...
    2017孤独雪阅读 343评论 0 4