AdaBoost算法介绍

1. Boosting

Boosting(提升方法)是将弱学习器算法提升为强学习算法的统计学习方法。在分类问题中,提升方法通过反复修改训练数据的权值分布,构建一系列基本分类器(也称为弱分类器),并将这些基本分类器线性组合,构成一个强分类器。AdaBoost就是Boosting中的代表性算法。Boosting原理可由下面这张图所示:

Boosting.png

2. AdaBoost

2.1 AdaBoost算法过程

输入:训练数据集T={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)},其中x_i\in \chi \subseteq R^n;弱学习器算法;
输出:最终分类器G(x)
(1)初始化训练数据的权值分布
D_i=(W_{11},...,W_{1i},...,W_{1N}), \quad W_{1i}=\frac{1}{N},\quad i=1,2,...,N

(2)对m个基本分类器m=1,2,...,M
(a)使用具有权值分布D_m的训练数据集,学习得到基本分类器G_m(x):\chi \to \{-1,+1 \}

(b)计算G_m(x)在训练数据集上的分类误差率e_m=\sum_{i=1}^{N}P(G_m(x)\not=y_i)=\sum_{i=1}^{N}W_{mi}I(G_m(x)\not=y_i)

(c)计算G_m(x)的权重\alpha_m =\frac{1}{2}ln\frac{1-e_m}{e_m}

(d)更新训练数据集的权值分布D_{m+1}=(W_{m+1,1},...,W_{m+1,i},...,W_{m+1,N})

W_{m+1,i}=\frac{W_{mi}}{Z_{m}}exp(-\alpha_my_iG_m(x_i)),\quad i=1,2,...,N

其中,Z_m是规范化因子Z_m=\sum_{i=1}^{N}W_{mi}exp(-\alpha_my_iG_m(x_i))

(3)构建基本分类器的线性组合f(x)=\sum_{m=1}^{M}\alpha_mG_m(x)

得到最终分类器G(x)=sign(f(x))=sign(\sum_{m=1}^{M}\alpha_mG_m(x))

其中,sign(x)是符号函数,取某个数的符号(正或负)。

对上述过程的说明:
  步骤(1):假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同,这一假设可以保证第1步能够在原始数据集上学习得到基本分类器G_1(x)
  步骤(2):AdaBoost反复学习基本分类器,在每一轮m=1,2,...,M依次执行下列操作:
  (a)使用当前权值分布为D_m的训练数据集,学习得到基本分类器G_m(x)
  (b)计算基本分类器G_m(x)在加权训练数据集上的分类误差率:e_m=\sum_{i=1}^{N}P(G_m(x_i)\not=y_i)=\sum_{G_m(x)\not=y_i}W_{mi}

其中,W_{mi}表示第m轮迭代中第i个样本的权值,即G_m(x)在加权训练数据集上的分类误差率就是被G_m(x)误分类样本的权值之和。
  (c)计算基本分类器G_m(x)的权重,即G_m(x)在最终分类器中的重要性。由上面(c)中公式可知,当分类误差率e_m\le\frac{1}{2}时,\alpha_m\ge0,且\alpha_m随着e_m的减小而增大,因此分类误差率越小的基本分类器在最终分类器中的作用越大。
  (d)更新训练集的权值分布为学习下一个基本分类器作准备。当G_m(x)\not=y_i时,W_{m+1,i}=\frac{W_{mi}}{Z_{m}}e^{\alpha_m};当G_m(x)=y_i时,W_{m+1,i}=\frac{W_{mi}}{Z_{m}}e^{-\alpha_m};由此可知,被基本分类器G_m(x)误分类样本的权值得以扩大,而被正确分类样本的权值却得以缩小。比较两者的权值,发现误分类样本的权值被放大了e^{2\alpha_m}=\frac{1-e_m}{e_m}倍。
  步骤(3):线性组合f(x)实现M个基本分类器的加权表决。系数\alpha_m表示基本分类器G_m(x)的重要性,\alpha_m的和并不为1。f(x)的符号决定了实例x的类别,f(x)的绝对值表示分类的确信度。

2.2 AdaBoost算法的训练误差分析

AdaBoost最基本的性质是它能在学习过程中不断减少训练误差,即不断减少在训练数据集上的分类误差率。对此,《统计学习方法》中给出了如下定理:
定理1(AdaBoost的训练误差界)AdaBoost算法的训练误差界为\frac{1}{N}\sum_{i=1}^{N}I(G_m(x)\not=y_i)\le\frac{1}{N}\sum_{i=1}exp(-y_if(x_i))=\prod_mZ_m
证明过程如下:

定理1证明.png

该定理说明,可以在每一轮选取适当的G_m使得Z_m最小,从而使训练误差下降最快。对于二分类问题,给出了如下定理:

定理2(二分类问题AdaBoost的训练误差界)
\prod_{m=1}^MZ_m=\prod_{m=1}^M[2\sqrt{e_m(1-e_m)}]=\prod_{m=1}^M\sqrt{(1-4\gamma^2_m)}\le exp(-2\sum_{m=1}^{M}\gamma^2_m)其中,\gamma_m=\frac{1}{2}-e_m
证明过程如下:

定理2证明.png

推论:结合定理1与定理2,如果存在\gamma>0,对所有的m有\gamma_m\ge\gamma,则\frac{1}{N}\sum_{i=1}^{N}I(G_m(x)\not=y_i)\le exp(-2M\gamma^2)
这表明在此条件下AdaBoost的训练误差是以指数速率下降的。

2.3 AdaBoost算法的解释

AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分布算法的二分类学习算法。
加法模型可理解为,最终的强分类器是由基本分类器加权平均得到的。
前向分布算法可理解为,在AdaBoost算法中我们利用前一个基本分类器的结果来更新后一个基本分类器的训练集数据权值。假设经过m-1轮的迭代,已经得到强分类器f_{m-1}(x)=f_{m-2}(x)+\alpha_{m-1}G_{m-1}(x)

在第m轮迭代得到\alpha_m,G_m(x)f_m(x),则
f_{m}(x)=f_{m-1}(x)+\alpha_{m}G_{m}(x)

由此可见强分类器是通过前向分布学习算法一步步得到的。

下面介绍AdaBoost的损失函数
2.1节中的基本分类器权重计算公式和样本权值更新公式都可从AdaBoost的损失函数中推导出来。

alpha与w的推导.png

2.4 AdaBoost算法的正则化

为了防止AdaBoost过拟合,通常也会加入正则化项,这个正则化项被称为步长(learning rate)。记为v,对于前面的基本分类器的迭代f_m(x)=f_{m-1}(x)+\alpha_mG_m(x)
如果加上了正则化项,则有f_m(x)=f_{m-1}(x)+v\alpha_mG_m(x)

v的取值范围为0<v\le1。对于同样的训练集学习效果,较小的v意味着需要更多的基本分类器的迭代次数。通常用步长和迭代最大次数来一起决定算法的拟合效果。

3. 总结

AdaBoost算法的两大特点:

  • 特点1:通过迭代,每次学习一个基本分类器;每次迭代中,提高那些被前一轮分类器错误分类的数据的权值,同时降低那些被正确分类的数据的权值;使得误分类样本在下一轮学习中起更大的作用。即不改变所给的训练数据,而是通过不断改变训练数据的权值分布,使得训练数据在基本分类器的学习中起不同的作用
  • 特点2:利用基本分类器的线性组合构建最终分类器。对分类误差率小的基本分类器赋予大的权值,使其在最终的模型中起较大的作用,对分类误差率大的基本分类器赋予小的权值,使其在最终的模型中起较小的作用。

参考

1.《统计学习方法》-李航著

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

推荐阅读更多精彩内容

  • 内容 一、Adaboost简介 二、Adaboost算法过程 三、Adaboost算法的训练误差分析 四、Adab...
    小小orange阅读 1,605评论 0 7
  • 转载自 http://www.52caml.com/head_first_ml/ml-chapter6-boost...
    麒麟楚庄王阅读 2,356评论 1 3
  • 链接:1. 线性回归总结2. 正则化3. 逻辑回归4. Boosting5. Adaboost算法 转自:原地址提...
    SUNFC阅读 2,328评论 0 6
  • 链接:1. 线性回归总结2. 正则化3. 逻辑回归4. Boosting5. Adaboost算法 模型来源 提升...
    SUNFC阅读 1,034评论 0 0
  • 很久没有写文字了,在我的印象中每次写文字都或是因为心情极度低落,貌似只有在这样的心境下才能做到文思泉涌 嗯……最近...
    苦海里的孤舟阅读 260评论 0 0