机器学习笔记(六) Adaboost

本文详细推导了Adaboost算法中指数损失函数作为优化目标的原因,以及权重更新和样本分布更新公式的数学推导过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

零、写在前面

参考资料:

  • 《机器学习》周志华

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

一、推导

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

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

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

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

H(x)=tTαtht(x)

这是指数损失函数:

lexp(H|D)=ExD[ef(x)H(x)]lexp(H|D)=Ex∼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∂lexp(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)=12lnP(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))sign(H(x))=sign(12lnP(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)sign(H(x))=argmax P(f(x)=y|x)

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

推导过程:

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

2.权重αα的更新公式

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

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)lexp(Ht|Dt)=lexp(αtht|Dt)(2)=Ex∼D[e−f(x)H(x)](3)=Ex∼D[e−f(x)αtht(x)](4)=Ex∼D[eαt||(f(x)=ht(x))+eαt||(f(x)≠ht(x))](5)=e−αtPx∼Dt(f(x)=ht(x))+eαtPx∼Dt(f(x)≠ht(x))(6)=e−αt(1−ϵt)+eαtϵt

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

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

lexp(αtht)|Dtαt=eαt(1ϵt)+eαtϵt∂lexp(αtht)|Dt∂αt=−e−αt(1−ϵt)+eαtϵt

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

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

3. 样本分布更新公式

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

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)lexp(Ht−1+ht)=Ex∼D[e−f(x)Ht(x)](8)=Ex∼D[e−f(x)(Ht−1+ht))](9)=Ex∼D[e−f(x)Ht−1e−f(x)ht](10)=Ex∼D[e−f(x)Ht−1(1−f(x)ht(x)+f2(x)ht2(x)2)](11)=Ex∼D[e−f(x)Ht−1(1−f(x)ht(x)+12)]

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

回过头来,我们要ht(x)ht(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)ht(x)=argmin lexp(Ht−1+ht|D)(13)=argminEx∼D[e−f(x)Ht−1(1−f(x)ht(x)+12)](14)=argminEx∼D[e−f(x)Ht−1(−1)f(x)ht(x)](15)=argmaxEx∼D[e−f(x)Ht−1f(x)ht(x)](16)=argmaxEx∼D[e−f(x)Ht−1f(x)ht(x)Ex∼D[e−f(x)Ht−1]](17)=argmaxEx∼D[e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]f(x)ht(x)]

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

下面这一步我没搞懂=.=,可能是概率论还没有学?
令上式中ef(x)Ht1ExD[ef(x)Ht1]=Dt(x)D(x)e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]=Dt(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)ht(x)=argmaxEx∼D[e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]f(x)ht(x)](19)=argmaxEx∼D[Dt(x)D(x)f(x)ht(x)](20)=argmaxEx∼Dt[f(x)ht(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)ht(x)=argmaxEx∼Dt[f(x)ht(x)](22)=argmaxEx∼Dt[1−2||(f(x)≠h(x))](23)=argmaxEx∼Dt[(−1)||(f(x)≠h(x))](24)=argminEx∼Dt[||(f(x)≠h(x))]

很明显,最后一个等式达到了我们想要的效果。现在我们再回过头看神秘的ef(x)Ht1ExD[ef(x)Ht1]=Dt(x)D(x)e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]=Dt(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)Dt+1(x)=D(x)e−f(x)HtEx∼D[e−f(x)Ht](26)=D(x)e−f(x)(Ht−1+αtht)Ex∼D[e−f(x)Ht](27)=D(x)e−f(x)Ht−1e−f(x)αthtEx∼D[e−f(x)Ht](28)=D(x)e−f(x)Ht−1e−f(x)αthtEx∼D[e−f(x)Ht](29)=Dt(x)Ex∼D[e−f(x)Ht−1]e−f(x)αthtEx∼D[e−f(x)Ht](30)=Dt(x)e−f(x)αthtEx∼D[e−f(x)Ht−1]Ex∼D[e−f(x)Ht]

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值