零、写在前面
参考资料:
本文记录了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)=Ex∼D[e−f(x)H(x)]lexp(H|D)=Ex∼D[e−f(x)H(x)]
我们要证明,令这一损失函数最小化,能使得集成学习的效果最优。
求函数极小值点,最简单的是另其偏导数为零。指数损失函数中,f(x)是真实函数,不是变量,所以我们仅需令其对H(x)的偏导为零:
∂lexp(H|D)∂H(x)=−e−H(x)P(f(x)=1|x)+e−H(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)=Ex∼D[e−f(x)H(x)]=Ex∼D[e−f(x)αtht(x)]=Ex∼D[eαt||(f(x)=ht(x))+eαt||(f(x)≠ht(x))]=e−αtPx∼Dt(f(x)=ht(x))+eαtPx∼Dt(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=Px∼Dt(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时刻,我们已有了Ht−1Ht−1,要产生htht。我们希望这一时间步之后的学习器Ht=Ht−1+htHt=Ht−1+ht能够修正之前的错误,即最小化指数损失函数:
lexp(Ht−1+ht)=Ex∼D[e−f(x)Ht(x)]=Ex∼D[e−f(x)(Ht−1+ht))]=Ex∼D[e−f(x)Ht−1e−f(x)ht]=Ex∼D[e−f(x)Ht−1(1−f(x)ht(x)+f2(x)h2t(x)2)]=Ex∼D[e−f(x)Ht−1(1−f(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)]
其中:
第四个等号对
e−f(x)hte−f(x)ht做了二阶泰勒展开
第五个等号是由于f(x)和h(x)都只能取
±1±1
回过头来,我们要ht(x)ht(x)最小化指数损失函数,我们可以去掉上式中的一些常量:
ht(x)=argmin lexp(Ht−1+ht|D)=argminEx∼D[e−f(x)Ht−1(1−f(x)ht(x)+12)]=argminEx∼D[e−f(x)Ht−1(−1)f(x)ht(x)]=argmaxEx∼D[e−f(x)Ht−1f(x)ht(x)]=argmaxEx∼D[e−f(x)Ht−1f(x)ht(x)Ex∼D[e−f(x)Ht−1]]=argmaxEx∼D[e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]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
第五个等号加上一个分母
Ex∼D[e−f(x)Ht−1]Ex∼D[e−f(x)Ht−1],是上一时间步的损失函数,是常量、定值。
下面这一步我没搞懂=.=,可能是概率论还没有学?
令上式中e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]=Dt(x)D(x)e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]=Dt(x)D(x)
(D为分布)
将上式代入上上式,“由数学期望的定义”,
ht(x)=argmaxEx∼D[e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]f(x)ht(x)]=argmaxEx∼D[Dt(x)D(x)f(x)ht(x)]=argmaxEx∼Dt[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)=1−2||(f(x)≠h(x))f(x)h(x)=1−2||(f(x)≠h(x))
将上式代入上上式,
ht(x)=argmaxEx∼Dt[f(x)ht(x)]=argmaxEx∼Dt[1−2||(f(x)≠h(x))]=argmaxEx∼Dt[(−1)||(f(x)≠h(x))]=argminEx∼Dt[||(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))]
很明显,最后一个等式达到了我们想要的效果。现在我们再回过头看神秘的
e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]=Dt(x)D(x)e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]=Dt(x)D(x):
Dt+1(x)=D(x)e−f(x)HtEx∼D[e−f(x)Ht]=D(x)e−f(x)(Ht−1+αtht)Ex∼D[e−f(x)Ht]=D(x)e−f(x)Ht−1e−f(x)αthtEx∼D[e−f(x)Ht]=D(x)e−f(x)Ht−1e−f(x)αthtEx∼D[e−f(x)Ht]=Dt(x)Ex∼D[e−f(x)Ht−1]e−f(x)αthtEx∼D[e−f(x)Ht]=Dt(x)e−f(x)αthtEx∼D[e−f(x)Ht−1]Ex∼D[e−f(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]
其中,第五个等号是将与
e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]=Dt(x)D(x)e−f(x)Ht−1Ex∼D[e−f(x)Ht−1]=Dt(x)D(x)
等价的
D(x)e−f(x)Ht−1=Dt(x)Ex∼D[e−f(x)Ht−1]D(x)e−f(x)Ht−1=Dt(x)Ex∼D[e−f(x)Ht−1]代入得到。
至此,我们完成了Adaboost算法的所有推导。