集成学习
1.导言
一个形象的比喻:“三个臭皮匠赛过诸葛亮!”
假设输入x和输出y之间的真实关系为:y=h(x).对于M个不同的模型f1(x),⋯,fM(x),每个模型的期望错误定义如下:
R(fm)=Ex[(fm(x)−h(x))2]=Ex[ϵm(x)2](式1)
其中,ϵm(x)=(fm(x)−h(x))为模型m在样本x上的错误。
这样一来,所有模型的平均错误为:
Rˉ(f)=M1m=1∑MEx[ϵm(x)2](式2)
集成学习(Ensemble Learning)是采取某种策略(比如:直接平均,加权平均)将多个模型集成起来,通过群体决策来提高准确率。集成学习首要的问题是如何集成多个模型。
最直接的策略是:直接平均,即通过“投票”。基于投票的集成模型F(x)定义为:
F(x)=M1m=1∑Mfm(x)(式3)
在这里,通过简单投票机制的集成模型F(x)=M1∑m=1Mfm(x),F(x)的期望在:M1Rˉ(f)和Rˉ(f)之间。
【证明】:根据定义,集成模型的期望错误为:
R(F)=Ex[(M1m=1∑Mfm(x)−h(x))2]=Ex[(M1m=1∑Mϵm(x))2]=Ex[M21m=1∑Mn=1∑Mϵm(x)ϵn(x)]=M21m=1∑Mn=1∑MEx[ϵm(x)ϵn(x)](式4)
其中,Ex[ϵm(x)ϵn(x)]为两个不同模型错误的相关性。如果每一个模型的错误是不相关的,则有:
∀m=n,Ex[ϵm(x)ϵn(x)]=0(式5)
如果,每个模型的错误都是相同的,则:
∀m=n,ϵm(x)=ϵn(x)(式6)
且由于:∀m,ϵm(x)≥0,于是得到:
Rˉ(f)≥R(f)≥M1Rˉ(f)(式7)
也就是说:集成模型的期望错误大于等于所有模型的平均期望错误的1/M,小于等于所有模型的平均期望错误。
⟹为了得到更好的模型集成效果,则需要每个模型之间具备一定的差异性。且随着模型数量的增多,其错误率也会下降,最终趋近于0.
一个有效的集成学习模型要求各个基模型(弱分类器)之间的差异尽可能大,为了增加基模型之间的差异,可以采用Bagging和Boosting这两类方法。
2.Bagging类方法
Bagging类方法是通过随机构造训练样本,随机选取特征等方法来提高每个基模型之间的独立性,代表性方法有:Bagging和随机森林。
→Bagging:(Bootstrap Aggregating)是通过不同模型的训练数据集的独立性来提高模型之间的独立性。在原始数据集上进行有放回的随机采样,得到M个比较小的训练集,并训练M个模型,然后通过投票的方法进行模型集成。
→随机森林:(Random Forest)是在Bagging的基础上再引入了随机特征,进一步提高每个基模型之间的独立性。再随机森林中,每个基模型都是一棵决策树。
3.Boosting类方法
Boosting类方法,是按照一定顺序来先后训练不同的基模型,每个模型都针对前序模型的错误进行训练。根据前序模型的结果,来调整训练样本的权重,增加不同基模型之间的差异性。Boosting类方法的代表有:Adaboost方法。
→AdaBoost:Boosting类的集成模型的目标是学习到一个加性模型,即:
F(x)=m=1∑Mαmfm(x)(式8)
其中,fm(x)为弱分类器,或者基分类器。αm为弱分类器的集成权重,F(x)就为强分类器。
Boosting类方法的关键:
怎样训练确定每一个弱分类器fm(x)及其权重αm。做法为:采用迭代的方式来学习每一个弱分类器,也就是按照一定的顺序依次训练每一个弱分类器。具体为:”假设已经训练了m个弱分类器,再训练第m+1个弱分类器的时候,增加已有弱分类器错分样本的权重,使得第m+1个弱分类器更加关注已有弱分类器错分的样本“。这样增加每个弱分类器的差异,最终提升集成分类器的准确率。这种方法叫做:AdaBoost算法。
二分类AdaBoost算法过如下:
AdaBoost算法的统计学解释:
AdaBoost算法可以视为一种分步优化的加性模型。损失函数定义如下:
L(F)=exp(−yF(x))=exp(−ym=1∑Mαmfm(x))(式9)
其中,y,fm(x)∈{−1,+1}.
若前m−1次迭代之后得到:
Fm−1(x)=t=1∑m−1αtft(x)(式10)
则第m次迭代的目标是找到一个αm和fm(x)使得损失函数最小,即:
L(αm,fm(x))=n=1∑Nexp(−y(n)(Fm−1(x(n))+αmfm(x(n))))(式11)
令wm(n)=exp(−y(n)Fm−1(x(n))),那么上式可以写为:L(αm,fm(x))=n=1∑Nwm(n)exp(−αmy(n)fm(x)(n)))(式12)
因为:y,fm(x)∈{−1,+1},则有:
yfm(x)=1−2I(y=fm(x))(式13)
其中,I(x)为指示函数。
将损失函数进行二阶泰勒展开,得到:
L(αm,fm(x))=n=1∑Nwm(n)(1−αmy(n)fm(x(n))+21αm2)∝αmn=1∑Nwm(n)I(y=fm(x))(式14)
可以得到,当αm>0时,最优分类器fm(x)为:样本权重是wm(n),1≤n≤N时的加权错误最小的分类器。
这样一来,求出了fm(x),则式12可以写成:
L(αm,fm(x))=y(n)=fm((x)(n))∑wm(n)exp(αm)+y(n)=fm((x)(n))∑wm(n)exp(−αm)∝ϵmexp(αm)+(1−ϵm)exp(−αm)(式15)
其中,ϵm为分类器fm(x)的加权错误率。
ϵm=∑nwm(n)∑y(n)=fm((x)(n))wm(n)(式16)
于是求取式15关于αm的导数并令为零:
α=21logϵm1−ϵm(式17)