机器学习笔记(六) Adaboost

零、写在前面

参考资料:

  • 《机器学习》周志华

本文记录了Adabooost算法的推导过程,不是Adaboost的教程。如果之前没有接触过Adaboost,我保证读者看完本文后一定学不会Adaboost算法。

一、推导

1. 为什么指数损失函数可以作为优化目标

首先说明我们使用的符号:

符号含义
T基学习器个数
h基学习器
α α 不同基学习器的权重
H集成学习器
f(·)真实函数(算法要学习的函数)
D训练样本的分布
E期望
l l 损失函数

Adaboost算法是要将T个弱学习器h(x)(决策树桩或神经网络等)加权结合结合成一个集成学习器H(x):

H(x)=tTαtht(x)

这是指数损失函数:

lexp(H|D)=ExD[ef(x)H(x)] l e x p ( H | D ) = E x ∼ D [ e − f ( x ) H ( x ) ]

我们要证明,令这一损失函数最小化,能使得集成学习的效果最优。

求函数极小值点,最简单的是另其偏导数为零。指数损失函数中,f(x)是真实函数,不是变量,所以我们仅需令其对H(x)的偏导为零:

lexp(H|D)H(x)=eH(x)P(f(x)=1|x)+eH(x)P(f(x)=1|x)=0 ∂ l e x p ( H | D ) ∂ H ( x ) = − e − H ( x ) P ( f ( x ) = 1 | x ) + e − H ( x ) P ( f ( x ) = − 1 | x ) = 0

解得:
H(x)=12lnP(f(x)=1|x)P(f(x)=1)|x) H ( x ) = 1 2 l n P ( f ( x ) = 1 | x ) P ( f ( x ) = − 1 ) | x )

等式两边加sign函数(正值得1,负值为-1)
sign(H(x))=sign(12lnP(f(x)=1|x)P(f(x)=1)|x)) s i g n ( H ( x ) ) = s i g n ( 1 2 l n P ( f ( x ) = 1 | x ) P ( f ( x ) = − 1 ) | x ) )

当 P( f(x) = 1 |x) > P( f(x) = -1 |x),即H(x)预测值为1时,上式值为1,反之预测值为-1时,上式值为-1


sign(H(x))=argmax P(f(x)=y|x) s i g n ( H ( x ) ) = a r g m a x   P ( f ( x ) = y | x )

上式由指数损失函数最小化推导而来,即指数损失函数最小化等价于 argmax P(f(x)=y|x) a r g m a x   P ( f ( x ) = y | x ) ,显然指数损失函数可以作为等价的优化目标。而之所以要使用指数损失函数,是因为其良好的数学性质。

推导过程:

指数损失函数->求偏导数->偏导数置为零->化简->加sign函数

2.权重 α α 的更新公式

t时刻,当基分类器 ht h t 基于样本分布 Dt D t 学习产生后,我们要为这个学习器分配一个权重 αt α t ,分配的目的是:配合 ht h t 的特性,要最小化指数损失函数:

lexp(Ht|Dt)=lexp(αtht|Dt)=ExD[ef(x)H(x)]=ExD[ef(x)αtht(x)]=ExD[eαt||(f(x)=ht(x))+eαt||(f(x)ht(x))]=eαtPxDt(f(x)=ht(x))+eαtPxDt(f(x)ht(x))=eαt(1ϵt)+eαtϵt(1)(2)(3)(4)(5)(6) (1) l e x p ( H t | D t ) = l e x p ( α t h t | D t ) (2) = E x ∼ D [ e − f ( x ) H ( x ) ] (3) = E x ∼ D [ e − f ( x ) α t h t ( x ) ] (4) = E x ∼ D [ e α t | | ( f ( x ) = h t ( x ) ) + e α t | | ( f ( x ) ≠ h t ( x ) ) ] (5) = e − α t P x ∼ D t ( f ( x ) = h t ( x ) ) + e α t P x ∼ D t ( f ( x ) ≠ h t ( x ) ) (6) = e − α t ( 1 − ϵ t ) + e α t ϵ t

其中:
- Ht H t 表示这一步的集成学习器
- ||(·)为指示函数,自变量为真时值为1,假时为0
- 第四个等号是考虑到预测值为真时,f(x)和h(x)同号
- 错误率 ϵt=PxDt(ht(x)f(x)) ϵ t = P x ∼ D t ( h t ( x ) ≠ f ( x ) )

对于这时的指数损失函数求偏导数:

lexp(αtht)|Dtαt=eαt(1ϵt)+eαtϵt ∂ l e x p ( α t h t ) | D t ∂ α t = − e − α t ( 1 − ϵ t ) + e α t ϵ t

令其为零,解得
αt=12ln(1ϵtϵt) α t = 1 2 l n ( 1 − ϵ t ϵ t )

这就是Adaboost每一步权重的更新公式。

3. 样本分布更新公式

Adaboost学习的t时刻,我们已有了 Ht1 H t − 1 ,要产生 ht h t 。我们希望这一时间步之后的学习器 Ht=Ht1+ht H t = H t − 1 + h t 能够修正之前的错误,即最小化指数损失函数:

lexp(Ht1+ht)=ExD[ef(x)Ht(x)]=ExD[ef(x)(Ht1+ht))]=ExD[ef(x)Ht1ef(x)ht]=ExD[ef(x)Ht1(1f(x)ht(x)+f2(x)h2t(x)2)]=ExD[ef(x)Ht1(1f(x)ht(x)+12)](7)(8)(9)(10)(11) (7) l e x p ( H t − 1 + h t ) = E x ∼ D [ e − f ( x ) H t ( x ) ] (8) = E x ∼ D [ e − f ( x ) ( H t − 1 + h t ) ) ] (9) = E x ∼ D [ e − f ( x ) H t − 1 e − f ( x ) h t ] (10) = E x ∼ D [ e − f ( x ) H t − 1 ( 1 − f ( x ) h t ( x ) + f 2 ( x ) h t 2 ( x ) 2 ) ] (11) = E x ∼ D [ e − f ( x ) H t − 1 ( 1 − f ( x ) h t ( x ) + 1 2 ) ]

其中:
第四个等号对 ef(x)ht e − f ( x ) h t 做了二阶泰勒展开
第五个等号是由于f(x)和h(x)都只能取 ±1 ± 1

回过头来,我们要 ht(x) h t ( x ) 最小化指数损失函数,我们可以去掉上式中的一些常量:

ht(x)=argmin lexp(Ht1+ht|D)=argminExD[ef(x)Ht1(1f(x)ht(x)+12)]=argminExD[ef(x)Ht1(1)f(x)ht(x)]=argmaxExD[ef(x)Ht1f(x)ht(x)]=argmaxExD[ef(x)Ht1f(x)ht(x)ExD[ef(x)Ht1]]=argmaxExD[ef(x)Ht1ExD[ef(x)Ht1]f(x)ht(x)](12)(13)(14)(15)(16)(17) (12) h t ( x ) = a r g m i n   l e x p ( H t − 1 + h t | D ) (13) = a r g m i n E x ∼ D [ e − f ( x ) H t − 1 ( 1 − f ( x ) h t ( x ) + 1 2 ) ] (14) = a r g m i n E x ∼ D [ e − f ( x ) H t − 1 ( − 1 ) f ( x ) h t ( x ) ] (15) = a r g m a x E x ∼ D [ e − f ( x ) H t − 1 f ( x ) h t ( x ) ] (16) = a r g m a x E x ∼ D [ e − f ( x ) H t − 1 f ( x ) h t ( x ) E x ∼ D [ e − f ( x ) H t − 1 ] ] (17) = a r g m a x E x ∼ D [ e − f ( x ) H t − 1 E x ∼ D [ e − f ( x ) H t − 1 ] f ( x ) h t ( x ) ]

其中:
第四个等号去掉一个负号,并将argmin更为argmax
第五个等号加上一个分母 ExD[ef(x)Ht1] E x ∼ D [ e − f ( x ) H t − 1 ] ,是上一时间步的损失函数,是常量、定值。

下面这一步我没搞懂=.=,可能是概率论还没有学?
令上式中 ef(x)Ht1ExD[ef(x)Ht1]=Dt(x)D(x) e − f ( x ) H t − 1 E x ∼ D [ e − f ( x ) H t − 1 ] = D t ( x ) D ( x )
(D为分布)
将上式代入上上式,“由数学期望的定义”,

ht(x)=argmaxExD[ef(x)Ht1ExD[ef(x)Ht1]f(x)ht(x)]=argmaxExD[Dt(x)D(x)f(x)ht(x)]=argmaxExDt[f(x)ht(x)](18)(19)(20) (18) h t ( x ) = a r g m a x E x ∼ D [ e − f ( x ) H t − 1 E x ∼ D [ e − f ( x ) H t − 1 ] f ( x ) h t ( x ) ] (19) = a r g m a x E x ∼ D [ D t ( x ) D ( x ) f ( x ) h t ( x ) ] (20) = a r g m a x E x ∼ D t [ f ( x ) h t ( x ) ]

再一次,f(x)和h(x)都只能取 ±1 ± 1 ,故可以有
f(x)h(x)=12||f(x)h(x) f ( x ) h ( x ) = 1 − 2 | | ( f ( x ) ≠ h ( x ) )
将上式代入上上式,

ht(x)=argmaxExDt[f(x)ht(x)]=argmaxExDt[12||f(x)h(x)]=argmaxExDt[1||f(x)h(x)]=argminExDt[||f(x)h(x)](21)(22)(23)(24) (21) h t ( x ) = a r g m a x E x ∼ D t [ f ( x ) h t ( x ) ] (22) = a r g m a x E x ∼ D t [ 1 − 2 | | ( f ( x ) ≠ h ( x ) ) ] (23) = a r g m a x E x ∼ D t [ ( − 1 ) | | ( f ( x ) ≠ h ( x ) ) ] (24) = a r g m i n E x ∼ D t [ | | ( f ( x ) ≠ h ( x ) ) ]

很明显,最后一个等式达到了我们想要的效果。现在我们再回过头看神秘的 ef(x)Ht1ExD[ef(x)Ht1]=Dt(x)D(x) e − f ( x ) H t − 1 E x ∼ D [ e − f ( x ) H t − 1 ] = D t ( x ) D ( x )
Dt+1(x)=D(x)ef(x)HtExD[ef(x)Ht]=D(x)ef(x)(Ht1+αtht)ExD[ef(x)Ht]=D(x)ef(x)Ht1ef(x)αthtExD[ef(x)Ht]=D(x)ef(x)Ht1ef(x)αthtExD[ef(x)Ht]=Dt(x)ExD[ef(x)Ht1]ef(x)αthtExD[ef(x)Ht]=Dt(x)ef(x)αthtExD[ef(x)Ht1]ExD[ef(x)Ht](25)(26)(27)(28)(29)(30) (25) D t + 1 ( x ) = D ( x ) e − f ( x ) H t E x ∼ D [ e − f ( x ) H t ] (26) = D ( x ) e − f ( x ) ( H t − 1 + α t h t ) E x ∼ D [ e − f ( x ) H t ] (27) = D ( x ) e − f ( x ) H t − 1 e − f ( x ) α t h t E x ∼ D [ e − f ( x ) H t ] (28) = D ( x ) e − f ( x ) H t − 1 e − f ( x ) α t h t E x ∼ D [ e − f ( x ) H t ] (29) = D t ( x ) E x ∼ D [ e − f ( x ) H t − 1 ] e − f ( x ) α t h t E x ∼ D [ e − f ( x ) H t ] (30) = D t ( x ) e − f ( x ) α t h t E x ∼ D [ e − f ( x ) H t − 1 ] E x ∼ D [ e − f ( x ) H t ]

其中,第五个等号是将与
ef(x)Ht1ExD[ef(x)Ht1]=Dt(x)D(x) e − f ( x ) H t − 1 E x ∼ D [ e − f ( x ) H t − 1 ] = D t ( x ) D ( x )
等价的
D(x)ef(x)Ht1=Dt(x)ExD[ef(x)Ht1] D ( x ) e − f ( x ) H t − 1 = D t ( x ) E x ∼ D [ e − f ( x ) H t − 1 ] 代入得到。

至此,我们完成了Adaboost算法的所有推导。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值