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

来源:互联网 发布:js后退页面同时刷新 编辑:程序博客网 时间:2024/05/01 08:54

本文可移步至个人博客阅读: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} 错误率 em个弱分类器的错误率为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 周志华
2 0
原创粉丝点击