Adaboost - 新的角度理解权值更新策略

原创 2016年08月28日 21:57:49

本文可移步至个人博客阅读:http://www.csuldw.com/2016/08/28/2016-08-28-adaboost-algorithm-theory/

关于Adaboost,在先前的一篇文章里,也介绍过它的步骤与实现,但理论上的推导未曾涉及。虽然Adaboost算法思想通俗易懂,但权值更新公式的由来,想必并非人人皆知。本文着重于从理论层面进一步阐述Adaboost,最终推导出迭代时的样本权值更新公式。

关于本文使用的数学符号的具体解释,见下表:

变量 符号 描述
训练数据 (X,Y) i个样本为(xi,yi),其中xi=(xi1,xi2,,xid)yi{+1,1}
错误率 e m个弱分类器的错误率为em
分类器的系数 α m个弱分类器的系数为αm
样本权重向量 D 迭代值第m次时的第i个样本的权值为Dm,i,初始阶段,所有样本的权重值均为1N
归一化因子 Z 迭代值第m次的的归一化因子为Zm
组合分类器 f(x) 迭代值第m次的组合分类器为fm(x)
最终分类器 G(X) 最终分类器为G(X)=sign(fM(x))

下面来看看Adaboost的算法思想与其权值的推导。

算法思想

关于Adaboost,它是boosting算法,从bias-variance(偏差-方差)的角度来看,boosting算法主要关注的是降低偏差。仔细想想便可理解,因为boosting算法每个分类器都是弱分类器,而弱分类器的特性就是high-bias & low variance(高偏差-低方差),其与生俱来的优点就是泛化性能好。因此,将多个算法组合起来之后,可以达到降偏差的效果,进而得到一个偏差小、方差小的泛化能力好的模型。另外,Adaboost的损失函数是指数损失L(y,f(x))=eyf(x)。为了掌握Adaboost的整个流程,我将其思想通过下图简单的进行了一番总结(由于此图是我使用LaTex编辑的,所以如有表达不妥的地方,还请读者指出):

图一 Adaboost 算法

Adaboost算法可以归纳至三步,如下:

  • 第一步:初始化每个样本的权重值为1N
  • 第二步:迭代M次,每次都根据错误率em不断修改训练数据的权值分布(此处需要确保弱学习器的错误率e小于0.5),样本权值更新规则为增加分类错误样本的权重,减少分类正确样本的权重;
  • 第三步:根据每个弱学习器的系数αm,将M个弱学习器组合到一起,共同决定最终的学习结果,即G(X)=Mm=1αmGm(x).

对于上面给出的算法,可能会存在一些疑问,诸如:

  1. 弱学习器的错误率e为何要小于0.5?
  2. 弱学习器的系数α这个等式如何得到的?
  3. 归一化因子Zm又有何寓意?

对于第一点,应该比较容易理解,因为如果弱学习器的效果都没有随机猜测好,那么学习得到的模型毫无疑问肯定是无用的。事实上,在上面三个问题中,最让人不解的应该是这个α的取值。为什么它会是这种形式呢?下面我们一起来推导一下。

权值推导

从图一我们可以看到,迭代至第m次时,分类器的系数计算公式为:

αm=12ln(1emem)(1)

然而,为何会是它呢?其推导方式有两种,第一种是最小化训练误差界进行推导;第二种是最小化损失函数进行推导。两者在本质上是一样的,都是为了求最小化某个式子时的α值。在下面的篇章中,只涉及第一种。也就是为了确定α的表达式,根据训练误差界来逐步推导。

训练误差界

从图一可知,最终得到的函数表达式是G(x),然而,当G(xi)yi时,yifM(xi)<0,从而得到eyifM(xi)1,进而可以得到:

1Ni=1NI(G(xi)yi)1NieyifM(xi)(2)

从图一中还可以看到,更新训练样本的权值分布公式如下:

Dm+1,i=Dm,iZmexp{αmyiGm(xi)}(3)

现在,对权值更新公式(3)变形,得到下列式子:

ZmDm+1,i=Dm,iexp{αmyiGm(xi)}(4)

对于上面这个式子,非常重要,是下面这个推导的核心。对于公式(2)不等于的右式,我们可以做如下推导:

1NieyifM(xi)=1Niexp(m=1MαmyiGm(xi))=D1,i=1NiD1,im=1Mexp(αmyiGm(xi))=(4)iZ1D2,im=2Mexp(αmyiGm(xi))=(4)Z1iZ2D3,im=3Mexp(αmyiGm(xi))=(4)Z1Z2iZ3D4,im=4Mexp(αmyiGm(xi))=m=1MZm

因此可以得出,Adaboost的误差界为

1Ni=1NI(G(xi)yi)1NieyifM(xi)=m=1MZm(5)

从公式(6)可以看出,在每一轮生成弱分类器Gm(x)时,应使归一化因子Zm尽可能的小,而最小化时的α就是我们要求的α, 即求优化表达式minαm Zm(αm)

系数α

将问题转化为求最小值,这就比较简单了,只需要对Zmαm的导数,然后令导数为零,求出此时的αm就好了。OK,下面给出计算过程如下:

Zm=i=1NDm,iexp{αyiGm(xi)}=Gm(xi)=yiDm,ieαm+Gm(xi)yiDm,ieαm=(1em)eαm+emeαm(6)

Zmαm=(1em)eαm+emeαm(7)

然后令导数式(7)等于0,简单的进行化简即可求得(1)式。

说明:对于(6)式的变形,从第一步变换为第二步时,应用的规则是,当样本被正确分类,yiGm(xi)=1;当样本被错误分类,yiGm(xi)=1。而从第二步到第三步,则可以理解为正确分类的样本所占比例为1em,错误分类的样本占比em

样本权值

通过上面的推导,得到α之后,根据(1)式,又可以化简得到正确分类时的eαm 和错误分类时的eαm ,公式如下:

eαm=e12ln(1emem)=em1em(8)

eαm=e12ln(1emem)=1emem(9)

而对于归一化因子Zm,又可以通过α推导其与错误率e的关系,推导过程如下:

Zm=i=1NDm,iexp{αyiGm(xi)}=Gm(xi)=yiDm,ieαm+Gm(xi)yiDm,ieαm=(1em)eαm+emeαm=(8)(9)(1em)em1em+em1emem=2em(1em)(10)

因此,根据(???)式的推导结果,可以进一步得到,当样本被正确分类时,yiGm(xi)=1,权值公式可更新为:

exp{αmyiGm(xi)}Zm=eαmZm=(9)(10)em1em12em(1em)=12(1em)(11)

当样本被错误分类时,yiGm(xi)=1,权值公式可更新为:

exp{αmyiGm(xi)}Zm=eαmZm=(9)(10)1emem12em(1em)=12em(12)

公式(11)与公式(12)就是最终的权值更新系数,只需将其带入到公式(3)即可求得新的样本权值。

Summary

本文主要侧重于权值的推导,而编写这篇博文的目的主要是为了弥补先前学习过程中的疏忽与不足,进而达到学习的目的。关于文章的实现,可去博主的github下载源码csuldw-Adaboost (各位同学,记得给个star噢^_^),另外,也可参考先前的博文Machine Learning algorithm - Adaboost。关于机器学习的其它文章,本博客将会持续更新。

References

  • Y Freund,R Schapire, A decision-theoretic generalization of on-line learning algorithms and an application to boosting, Journal of Popular Culture, 1997
  • 统计学习方法》 by 李航
  • Wikipedia-Adaboost
  • 《机器学习 Machine Learning》 by 周志华
版权声明:本文为博主原创文章,转载请注明来源。

adaboost原理(包含权重详细解释)

1.1 Adaboost是什么 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。它的自...
  • mousever
  • mousever
  • 2016年07月26日 17:59
  • 5925

AdaBoost算法详解

AdaBoost算法 训练数据集 初始化训练数据的权值分布 对M=1,2,…,m 使用具有权值分布Dm的训练数据集学习,得到基本分类器: 计算Gm(x)在训练数据集上的分类误差率: ...
  • oppeuro
  • oppeuro
  • 2016年12月20日 20:31
  • 578

Adaboost 算法的原理与推导(强烈推荐)

 本文转自:http://www.360doc.com/content/14/1109/12/20290918_423780183.shtml Adaboost 算法的原理与推导 0...
  • Sunshine_in_Moon
  • Sunshine_in_Moon
  • 2015年07月01日 21:17
  • 2508

AdaBoost

AdaBoost https://www.cnblogs.com/pinard/p/6133937.html 周志华《机器学习》AdaBoost是Boosting族算法最著名的代表。AdaBoos...
  • YQMind
  • YQMind
  • 2017年12月21日 22:10
  • 53

adaboost原理(包含权重详细解释)

 1.1 Adaboost是什么 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。...
  • LIYUAN123ZHOUHUI
  • LIYUAN123ZHOUHUI
  • 2016年06月20日 14:28
  • 1292

CNN卷积神经网络学习笔记3:权值更新公式推导

在上篇《CNN卷积神经网络学习笔记2:网络结构》中,已经介绍了CNN的网络结构的详细构成,我们已经可以初始化一个自己的CNN网络了,接下来就是要用训练得到一个确定的CNN的模型,也就是确定CNN的参数...
  • happyer88
  • happyer88
  • 2015年07月06日 11:23
  • 13665

为什么样本方差里面要除以(n-1)而不是n?

前段日子重新整理了一下“为什么样本方差里面要除以(n-1)而不是n?”这个问题的解答,跟大家分享一下,如果有什么错误的话希望大家能够提出来,我会及时改正的                   ...
  • fuming2021118535
  • fuming2021118535
  • 2016年05月01日 14:18
  • 29376

彻底理解样本方差为何除以n-1

设样本均值为,样本方差为,总体均值为,总体方差为,那么样本方差有如下公式:    很多人可能都会有疑问,为什么要除以n-1,而不是n,但是翻阅资料,发现很多都是交代到,如果除以n,对样本方差的估计不是...
  • Hearthougan
  • Hearthougan
  • 2017年09月06日 00:10
  • 5408

样本方差的与方差

之前做模型拟合的时候需要计算样本的方差和均值,Matlab的std函数算出来就是不对经,一看才知道matlab的给定的标准差计算公式是: For a random variable vector...
  • mseeds
  • mseeds
  • 2017年09月29日 17:06
  • 183

简单易学的机器学习算法——AdaBoost

一、集成方法(Ensemble Method)
  • google19890102
  • google19890102
  • 2015年06月16日 22:04
  • 9726
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Adaboost - 新的角度理解权值更新策略
举报原因:
原因补充:

(最多只允许输入30个字)