本文简要介绍了集成学习,说明了Boosting和Bagging的主要特点。接着,基于周志华的《机器学习》中关于Adaboost算法,详细推导了Adaboost算法,并给出了关键步骤的解释,更方便初学者的理解。
集成学习
集成学习通过构建并结合多个学习器来完成学习任务,有是也称为多分类器系统,基于委员会的学习等。

上图显示出集成学习的一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生,例如BP神经网络等。此时,集成中只包含同种类型的个体学习器,这样的集成是同质
的,同质集成中的个体学习器也称基学习器
,相应的学习算法称为基学习算法
,集成也可包含不同类型的个体学习器,例如同时包含决策树和神经网络,这样的集成是异质
的。异质集成不再有基学习算法,相应的个体学习器不再称为基学习器,常称为组件学习器
。
以二分类问题y∈{−1,+1}y∈{−1,+1}和真实函数ff,假定基本分类器的错误率为ϵ,即对每个基分类器hihi,有:
P(hi(x)≠f(x))=ϵ(1)(1)P(hi(x)≠f(x))=ϵ
假设集成通过简单投票法结合
TT个基分类器,若有超过半数的基分类器正确,则集成分类就正确:
H(x)=sign(∑i=1Thi(x))(2)
说明:
- ff是真实函数,产生的结果范围是{−1,+1},分类结果是真实的,准确的。
- hi(x)hi(x)是基分类器,产生的结果范围是{−1,+1}{−1,+1},可能与真实结果有偏差。
- H(x)H(x)是集成分类器,举例来说,如果超过一半的基分类器的分类结果是+1,则集成分类器的结果是+1。
- 对于式(2)(2),设A=∑i=1T(hi(x))A=∑i=1T(hi(x)),分析如下,如果A>0A>0表明TT个基分类器分类结果为+1的较多,结果是集成分类器分类结果是+1+1;如果A=0A=0,表明TT个基分类器中,分类结果为+1的−1−1的一样多。如果A<0A<0,表明TT个基分类器中,分类结果为−1的基分类器数量较多,集成分类器的结果为−1−1。函数是符号函数,在⋅<0,⋅=0,⋅>0·<0,·=0,·>0时分别取值为−1,0,1−1,0,1。
假设基分类器的错误率相互独立,则由hoeffding
不等式可知,集成的错误率为:
P(H(x)≠f(x))=∑k=0T/2CkT(1−ϵ)kϵT−k≤e−12T(1−2ϵ)2(3)(3)P(H(x)≠f(x))=∑k=0T/2CTk(1−ϵ)kϵT−k≤e−12T(1−2ϵ)2
上式可以看出,随着集成中个体分类器数目
TT的增大,集成的错误率将成指数级下降,最终趋于零。
hoeffding
不等式为:
随机变量xi,xi∈{0,1},x¯¯¯=1n(x1+x2+⋯+xn)则有P(|x¯¯¯−E(x¯¯¯)|≥t) ≤e−2nt2随机变量xi,xi∈{0,1},x¯=1n(x1+x2+⋯+xn)则有P(|x¯−E(x¯)|≥t) ≤e−2nt2
式
(3)(3)中,
t=12−ϵt=12−ϵ,
n=Tn=T
P(H(x)≠f(x))=P(|H(x)−f(x)|≥t)≤e−2nt2=e−2T(12−ϵ)2=e−12T(1−2ϵ)2P(H(x)≠f(x))=P(|H(x)−f(x)|≥t)≤e−2nt2=e−2T(12−ϵ)2=e−12T(1−2ϵ)2
根据个体学习器的生产方式,目前的集成学习方法大致可以分为两大类,即个体学习器间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器间不存在依赖关系,可同时生成的并行化方法;前者的代表是Boosting,后者代表的是Bagging和随机森林。
Boosting
Boosting是一族可将弱学习器提升为强学习器的方法,这族算法的工作机制类似:先从初始训练集训练处一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
Boosting族算法最著名的代表是Adaboost。
Adaboost算法有多种推导方式,比较容易理解的是基于“加性模型”,即基学习器的线性组合:
H(x)=∑t=1Tαtht(x)(4)(4)H(x)=∑t=1Tαtht(x)
Adaboost的推导主要有三个方面的内容:损失函数的定义,
αtαt的求解和
ht(x)ht(x)的求解。
损失函数:
这里选用指数损失函数来替换0/1损失函数来作为优化目标,理由如下:
指数损失函数的形式为:
lexp(H|D)=Ex∼D[e−f(x)H(x)](5)(5)lexp(H|D)=Ex∼D[e−f(x)H(x)]
上式中:
- f(x)f(x)是真实函数,函数值范围是{−1,+1}{−1,+1};
- H(x)H(x)是基学习器,函数值范围是{−1,+1}{−1,+1},结果可能存在误差
- DD指某种分布;
- x∼D 的意思是,xx服从D分布;
- lexp(H|D)lexp(H|D)的含义是在分布为DD的前提下,以H为自变量的损失函数。
自然的,我们希望获得公式(5)(5)的最小化,考虑公式(5)(5)对H(x)H(x)求一阶偏导:
∂lexp(H|D)∂H(x)=∂Ex∼D[e−f(x)H(x)]∂H(x)=−e−H(x)Ex∼Df(x)=−e−H(x)[1⋅P(f(x)=1|x)+(−1)P(f(x)=−1|x)]=−e−H(x)P(f(x)=1|x)+e−H(x)P(f(x)=−1|x)(6)(6)∂lexp(H|D)∂H(x)=∂Ex∼D[e−f(x)H(x)]∂H(x)=−e−H(x)Ex∼Df(x)=−e−H(x)[1⋅P(f(x)=1|x)+(−1)P(f(x)=−1|x)]=−e−H(x)P(f(x)=1|x)+e−H(x)P(f(x)=−1|x)
令式
(4)(4)等于0 ,则有:
∂lexp(H|D)∂H(x)e−H(x)P(f(x)=1|x)(eH(x))2H(x)=−e−H(x)P(f(x)=1|x)+eH(x)P(f(x)=−1|x)=0=eH(x)P(f(x)=−1|x)=P(f(x)=1|x)P(f(x)=−1|x)=12lnP(f(x)=1|x)P(f(x)=−1|x)⇒⇒⇒(6)(6)∂lexp(H|D)∂H(x)=−e−H(x)P(f(x)=1|x)+eH(x)P(f(x)=−1|x)=0⇒e−H(x)P(f(x)=1|x)=eH(x)P(f(x)=−1|x)⇒(eH(x))2=P(f(x)=1|x)P(f(x)=−1|x)⇒H(x)=12lnP(f(x)=1|x)P(f(x)=−1|x)
因此,有:
sign(H(x))=sign(12lnP(f(x)=1|x)P(f(x)=−1|x))={1,P(f(x)=1|x)>P(f(x)=−1|x)−1,P(f(x)=1|x)<P(f(x)=−1|x)=argminy∈−1,1P(f(x)=y|x)(7)(7)sign(H(x))=sign(12lnP(f(x)=1|x)P(f(x)=−1|x))={1,P(f(x)=1|x)>P(f(x)=−1|x)−1,P(f(x)=1|x)<P(f(x)=−1|x)=argminy∈−1,1P(f(x)=y|x)
这意味着,
sign(H(x))sign(H(x))达到了贝叶斯最优错误率,换言之,若指数损失函数最小化,则分类错误率也将最小化,这说明指数损失函数是分类任务原本0/1损失函数的一致性的替代损失函数,由于这个替代函数有更好的数学性质,如连续可微,所以替代0/1损失函数。
αtαt的求解
在adaboost算法中,第一个基分类器h1h1是通过直接将基学习算法用于初始数据分布而得,此后迭代地生成htht和αtαt当基分类器htht基于分布DD产生后,该分类器的权重αt应是的αthtαtht最小化指数损失函数。
lexp(αtht|Dt)=Ex∼Dt[e−f(x)αtht(x)]=Ex∼Dt[e−αtI(f(x)=ht(x)+eαtI(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(8)(8)lexp(αtht|Dt)=Ex∼Dt[e−f(x)αtht(x)]=Ex∼Dt[e−αtI(f(x)=ht(x)+eαtI(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
上式中,
I(⋅)I(⋅)是指示函数,在
⋅⋅为真和假时分别取值为1,0,
ϵ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(9)(9)∂lexp(αtht|Dt)∂αt=−e−αt(1−ϵt)+eαtϵt
使上式为零,可解得:
αt=12ln(1−ϵtϵt)(10)(10)αt=12ln(1−ϵtϵt)
式
(10)(10)即为
αtαt的求解结果。
ht(x)ht(x)的求解:
adaboost算法在获得Ht−1Ht−1之后样本分布将进行调整,使下一轮的基学习器htht能纠正Ht−1Ht−1的一些错误,理想的htht能纠正Ht−1Ht−1的全部错误,即最小化为:
lexp(Ht−1+ht|Dt)=Ex∼Dt[e−f(x)(Ht−1(x)+ht(x))]=Ex∼Dt[e−f(x)(Ht−1(x)e−f(x)ht(x)](11)(11)lexp(Ht−1+ht|Dt)=Ex∼Dt[e−f(x)(Ht−1(x)+ht(x))]=Ex∼Dt[e−f(x)(Ht−1(x)e−f(x)ht(x)]
注意到
f2(x)=h2t(x)=1f2(x)=ht2(x)=1,因为
f(x)∈{−1,+1},ht(x)∈{−1,+1}f(x)∈{−1,+1},ht(x)∈{−1,+1},上式使用
e−f(x)ht(x)e−f(x)ht(x)的泰勒展开式近似为:
lexp(Ht−1+ht|Dt)=Ex∼Dt[e−f(x)(Ht−1(x)(1−f(x)ht(x)+f2(x)h2t(x)2)]=Ex∼Dt[e−f(x)(Ht−1(x)(1−f(x)ht(x)+12)](12)(12)lexp(Ht−1+ht|Dt)=Ex∼Dt[e−f(x)(Ht−1(x)(1−f(x)ht(x)+f2(x)ht2(x)2)]=Ex∼Dt[e−f(x)(Ht−1(x)(1−f(x)ht(x)+12)]
上式中
exex的泰勒展开式为:
ex=1+x+x22!+⋯+xnn!+o(xn)ex=1+x+x22!+⋯+xnn!+o(xn)
于是,理想的基学习器:
ht(x)=argminhlexp(Ht−1+h|D)=argminhEx∼D[e−f(x)Ht−1(x)(1−f(x)h(x)+12)]=argmaxhEx∼D[e−f(x)Ht−1(x)f(x)h(x)]=argmaxhEx∼D[e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)]f(x)h(x)](13)(13)ht(x)=argminhlexp(Ht−1+h|D)=argminhEx∼D[e−f(x)Ht−1(x)(1−f(x)h(x)+12)]=argmaxhEx∼D[e−f(x)Ht−1(x)f(x)h(x)]=argmaxhEx∼D[e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)]f(x)h(x)]
上式中,
Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht−1(x)]是一个常数,令
DtDt为一个分布:
Dt(x)=D(x)e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)](14)(14)Dt(x)=D(x)e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)]
则根据数学期望的定义,这等价于:
ht(x)=argmaxhEx∼D[e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)]f(x)h(x)]=argmaxhEx∼Dt[f(x)h(x)](15)(15)ht(x)=argmaxhEx∼D[e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)]f(x)h(x)]=argmaxhEx∼Dt[f(x)h(x)]
因为,
f(x),h(x)∈{−1,+1}f(x),h(x)∈{−1,+1},有:
f(x)h(x)=1−2I(f(x)≠h(x))(16)(16)f(x)h(x)=1−2I(f(x)≠h(x))
这是因为:
f(x)f(x) | h(x)h(x) | f(x)h(x)f(x)h(x) | I(f(x)≠h(x))I(f(x)≠h(x)) |
---|
-1 | -1 | 1 | 0 |
-1 | +1 | -1 | 1 |
+1 | +1 | 1 | 0 |
+1 | -1 | -1 | 1 |
所以有,f(x)h(x)=1−2I(f(x)≠h(x))f(x)h(x)=1−2I(f(x)≠h(x))
则理想的基学习器为:
ht(x)=argmaxhEx∼Dt[f(x)h(x)]=argminhEx∼Dt[I(f(x)≠h(x))](17)(17)ht(x)=argmaxhEx∼Dt[f(x)h(x)]=argminhEx∼Dt[I(f(x)≠h(x))]
由此可见,理想的
htht将在分布
DtDt下最小化分类误差。因此,弱分类器将基于分布
DtDt来训练,且针对
DtDt的分类误差应小于0.5,这在一定程度上类似”残差逼近”的思想,考虑到
DtDt和
Dt+1Dt+1的关系,有:
Dt+1(x)=D(x)e−f(x)Ht(x)Ex∼D[e−f(x)Ht(x)]=D(x)e−f(x)Ht−1(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht(x)]=D(x)e−f(x)Ht−1(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht(x)]=Dt(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht(x)](18)(18)Dt+1(x)=D(x)e−f(x)Ht(x)Ex∼D[e−f(x)Ht(x)]=D(x)e−f(x)Ht−1(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht(x)]=D(x)e−f(x)Ht−1(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht(x)]=Dt(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht(x)]
至此,
ht(x)ht(x)的表达式推导完毕。