梯度提升思想

来源:互联网 发布:西游记源码 编辑:程序博客网 时间:2024/05/12 18:48

1.模型要素

1.提升模型(加法模型)

Fm(xi)=j=1mαjGj(xi)=Fm1(xi)+αmGm(xi)
Fm(xi)=j=1mTj=Fm1(xi)+Tm(xi)
公式1是Adaboost模型,Gm{1,1}αm是公式的权重(唯一)。公式2是提升树模型,Tm=Kk=1αmkI(xiRmk)输出是某叶节点Rmk的取值αmk(数量由叶节点数目决定)。对于二分类问题,提升树是Adabost的一种特殊情况,提升树叶节点的取值为带符号的Adaboost权重±αm

2.参数

  1. 二分类(以Adaboost为例): 基函数(分类器)Gm(x)(输出为-1,1),权重αm(每个分类器唯一)
  2. 提升树(以回归树为例):树结构Rmk(对应叶子节点,类似Gm),节点权重αmk

3.目标函数(此处即为损失函数)

提升模型有三种损失函数,对于分类问题(adaboost)用指数损失函数

L(y,Fm)=i=1nexp(yiFm(xi))
回归问题(提升回归树)用平方差损失函数
L(y,Fm)=i=1n(yiFm(xi))2
一般决策问题用一般损失函数。

2.模型训练(求解参数)

  1. 模型目标函数为其损失函数,训练目的是使的目标函数最小。此模型使用梯度提升算法,每一步弱预测模型依据损失函数的梯度方向)
  2. 思想:对目标函数泰勒展开,仅考虑一阶导数的情况。对L(y,Fm(x))使用泰勒展开近似
    L(y,Fm(x))=L(y,Fm1(x)+fm(x))L(y,Fm1)+L(y,Fm1)Fm1fm(x)
    fm(x)方向取[L(y,Fx)Fx]Fx=Fm1时,梯度下降最快(因为正交,梯度下降法),此时更新后的模型应为
    Fm(x)=Fm1λmL(y,Fm1)Fm1
    其中λm为步长,最终fm=λmL(y,Fm1)Fm1,在回归问题中fm为基函数,分类问题为基函数+分类器权重
  3. 由上面的分析可得提升方法的一般步骤为:
    1)计算伪残差rmi=[L(yi,Fx)Fx]Fx=Fm1,其中i表示样本号,m表示基函数(分类器)号
    2)基于rmi,i1,2,..,n,构建新函数f¯m(分类问题为基函数,CART回归树输出为叶子节点)
    3)将f¯m带入损失函数,求解步长λm=argminλL(y,Fm1λf¯m)(分类:分类器权重;回归:叶节点取值)
    4)更新Fm=Fm1+λf¯m

3. Adaboost推导

  1. 模型为加法模型,损失函数为指数损失函数,参数为分类器Gm(x){1,1}和分类器权重αm
  2. 梯度提升推导:
    1)对损失函数L(y,fm1)求梯度:
    rmi=yiexp(yifm1)=yiw¯mi
    可理解为带权重的样本,对模型影响度不同
    2)根据rm创建新的基函数Gm,使Gmrm尽量接近
    Gm=argminGi=1nw¯miI(yiG(xi))

    3)将基函数Gm带入损失函数求分类器权重(步长)αm
    αm=argminαi=1nw¯miexp(yiαGm(xi))
    损失函数变为仅关于α的函数,对α求导得
    αm=12log1ememem=ni=1w¯miI(yiGm(xi))i=1nw¯mi=i=1nwmiI(yiGm(xi))
    3)更新模型fm(x)=fm1(x)+αmGm(x),继续重复1),其中w¯m+1,i=w¯m,iexp(yiαmGm(xi))
  3. 前向分布算法推导
    损失函数可写为:
    L(y,fm)=L(y,fm1+αmGm)=i=1nexp(yi(fm1+αmGm(xi)))=i=1nw¯miexp(yiαG(xi))w¯mi=exp(yifm1(xi)
    然后最小化损失函数,与2中2)形式相同
  4. 算法性能:误差率与分类器个数成指数关系

4.GBDT回归树推导

1)损失函数为平方损失,对损失函数求梯度,得到伪残差:

rmi=yiFm1(xi)

2)对rmi拟合一个回归树,得到第m棵树的叶节点区域Rmk
(Rm,αm)=argminR,αi=1n(rmiTm(xi))2
3)将给出的Rmk带入损失函数,求极小值
(αm1,αm2)=argminα[xiRm1(yiα1)2+xiRm2(yiα2)2]
得到α为每个叶节点区域中所有yi的均值.
4)遍历所有可能的切分点(将所有yi都尝试作为切分点),得到所有叶节点区域Rmk,重复2)3)步,找到最优解。合并形式为(Rm,αm)=argminRni=1[Kk=1minαxiRk(yiαk)2]
5)更新Fm(xi)=Fm1+Tm=Fm1(xi)+Kk=1αmkI(xiRmk)
6)其中2)同样可用前向分布算法得出

0 0
原创粉丝点击