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

本文可移步至个人博客阅读: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 ,进而可以得到:

1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值