您的位置:首页 > 其它

集成学习:Boosting及Adaboost、Gradient boosting

2017-04-25 09:35 357 查看
[toc]

集成学习源于弱可学习和强可学习的等价性证明。一个概念是弱可学习的是指存在多项式时间内的学习算法能够学习它,且学习的正确率略高于随机猜测;一个概念强可学习是指存在多项式时间内的学习算法能够学习它,且学习的正确率非常高。Schapire证明了弱可学习和强可学习是等价的,即一个概念是强可学习的充要条件是概念 弱可学习。那么一个很自然的问题就是,已知一组弱学习器,能否将它们转化为强学习器?答案是肯定的,而转化方法就是集成学习。

集成学习主要分为两大类:

1.个体学习器间存在强依赖关系,必须串行生成的序列化方法,代表为Boosting;

2.个体学习器之间不存在强依赖关系、可同时生成的并行化方法,代表为Bagging。

本文主要介绍Boosting的机制及其代表算法Adaboost和Gradient boosting

的过程和推导。

Boosting

Boosting是先从初始训练集训练出一个弱学习器,再根据弱学习器的学习准确率调整样本的权重,然后基于调整过权重后的样本训练下一个弱学习器,重复以上步骤直到弱学习器数目达到设定值T,最后将这些弱学习器加权结合。

Boosting的代表算法有Adaboosting和Gradient Boosting。

首先介绍二分类任务中Adaboost 的过程和推导。

Adaboost

1.符号:

数据集{(x1,y1),...(xN,yN))} ,yi∈{−1,1}

ki(⋅) :第i个弱学习器;

αi(⋅) :第i个弱学习器的权重;

Cm(⋅) : 前m个弱学习器的线性组合;

ωm :第m次训练中样本的权重向量;

ϵm :第m个弱学习器的加权误差率。

2.过程:

输入:训练集D={(x1,y1),...,(xN,yN)} ,训练轮数T,基学习算法Φ

ω1=1N

for t=1,2,…,T do:

kt=Φ(ωt,D)

ϵt=∑yi≠kt(xi)ωti∑i=1Nωti

If ϵt>0.5 ,then break

αt=12ln(1−ϵtϵt)

ωt+1=e−yCt(x) #ωt+1i=e−yiCt(xi),i=1,2,...,N

end for

输出:CT(xi)=α1k1(xi)+...+αTkT(xi)

3.推导

要求解线性组合器 Cm(xi)=α1k1(xi)+...+αmkm(xi)

可以写成

Cm(xi)=Cm−1(xi)+αmkm(xi)

从这个等式可以看出,若已知第m-1个线性组合器,要求解第m个线性组合器只需求解第m个基学习器km(⋅) 及其权重αm 即可。因此整个问题可以拆分成m步求解。

定义Cm 的损失函数:

E=∑i=1Ne−yiCm(xi)

直观的理解,由于yi∈{−1,1} ,如果预测正确,即yi=Cm(xi) ,则yiCm(xi)=1 ,否则为-1。故预测正确的样本数量越多E越小,反之越大。

E=∑i=1Ne−yiCm(xi)=∑i=1Ne−yiCm−1(xi)e−yiαmkm(xi)

令 ωmi=e−yiCm−1(xi)i ,则

E=∑i=1Nωmie−yiαmkm(xi)

=∑yi=km(xi)ωmie−yiαmkm(xi)+∑yi≠km(xi)ωmie−yiαmkm(xi)

=∑yi=km(xi)ωmie−αm+∑yi≠km(xi)ωmieαm

=∑i=1Nωmie−αm+∑yi≠km(xi)ωmi(eαm−e−αm)

首先求km(⋅) 。注意到km(⋅) 对等式右边第一部分没有影响,只对第二部分的值有影响。由于αm>0 ,所以eαm−e−αm>0 ,故当∑yi≠km(xi)ωmi 最小时,E最小。换句话说,应选择具有最小加权分布误差的km=Φ(ωt,D) 。

对于αm :

令 ∂E∂αm=−∑yi=km(xi)ωmie−αm+∑yi≠km(xi)ωmieαm=0

得αm=12ln(∑yi=km(xi)ωmi∑yi≠km(xi)ωmi)

令ϵm=∑yi≠km(xi)ωmi∑i=1Nωmi ,即加权分类误差率,

则αm=12ln(1−ϵmϵm) 。

至此我们推导出了每一步所需要的αm,km,ωm 。

Gradient boosting

Gradient boosting产生的强学习器依旧是一组弱学习器的线性组合。它采用了steepest descent方法来寻找最优解。

推导:

假设学习器为F(x)=∑m=0Mβmh(x;am) 。其中h(⋅) 为给定结构的弱学习器类型 , am 为弱学习器的参数。 βm 为每个弱学习器的权重。M为弱学习器个数。

理想地,我们需要能够使损失函数L在未知样本(X,Y) 上期望值达到最小的学习器F,即:

F=argminF{EX,YL(Y,F(X))}

但是绝大多数情况下,我们只有有限的训练样本,无法得知上述期望。所以用训练样本来代替期望值。即求解:

F(x)=argminF{∑i=1N(L(yi,F(xi)))}

接下来用steepest descent的方法:

令Fm(x)为第m步求得的学习器。

初始F0(x)=argminρ∑i=1NL(yi,ρ),即样本均值。

在第m步中,假设Fm−1已知,则训练损失函数在xi的梯度gm(xi)为

gm(xi)=[∂L(yi,F(xi))∂F(xi)]F(xi)=Fm−1(xi)

梯度是函数值上升最快的方向,所以−gm={−gm(xi)}N1 为函数值在样本空间下降最快的方向。根据steepest descent,需要以−gm 为F 的前进方向。然后用line search在该方向上求解最优步长ρm,并令Fm=Fm−1−ρmgm 。但是gm 只定义在训练样本{xi}N1 上,故上式中的Fm无法用在其他x值上。

解决这个问题的办法是用一个基学习器h(x;am)拟合梯度方向 。由于基学习器的结构已经给定,若am确定则基学习器确定。

am=argmina,β∑i=1N[−gm(xi)−βh(xi;a)]2

注意如果把基学习器看成一个向量的话,这里的基学习器是最平行于gm 的向量,而不是最靠近gm 的向量。 因为步长可以缩放基学习器。

有了前进方向,接下来计算前进步长ρm

ρm=argminρ∑i=1NL(yi,Fm−1(xi)+ρh(xi;am))

然后更新Fm:

Fm(x)=Fm−1(x)+ρmh(x;am)

算法:

1.F0(x)=argminρ∑i=1NL(yi,ρ)

2.For m=1 to M do:

3.yi^=−[∂L(yi,F(xi))∂F(xi)]F(xi)=Fm−1(xi),i=1,…,N

4.am=argmina,β∑i=1N[yi^−βh(xi;a)]2

5.ρm=argminρ∑i=1NL(yi,Fm−1(xi)+ρh(xi;am))

6.Fm(x)=Fm−1(x)+ρmh(x;am)

7.end For
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法