Gradiant Boosting Machine

  最近看了Friedman的关于梯度提升算法的论文,记录一下。
这里写图片描述

1 函数估计

  在机器学习领域,算法就是利用数据去估计一个函数或就是一个“预测学习”问题。用训练数据得到一个估计的F*(x),这个函数将x映射到y,然后我们通过最小化一个损失函数,求出我们想要的F(x),即:

F=argminFEy,xL(y,F(x))=argminFEx[EyL(y,F(x))|x](1)

L(y,f(x)) 包括军方误差 (yF)2 ,binomial log-likelihood(logic regression)等
常见的套路就是限定 F(x) 是某个参数化的函数空间里的一个函数 F(x;P) P={P1,P2} 是一个有限集合,这里我们只考虑加法模型
F(x;{βm,am})=m=1Mβmh(x;am)(2)

公式(2)其实是很多算法的核心思想,如神经网络、支持向量机等,这里只讨论 h(x;am) 是一个小的回归树。其中的参数包括分割变量、分割位置以及叶子节点的值。

1.1 数值优化

  通常,选择一个参数化的模型令

P=argminPΦ(P)(3)

这里
Φ(P)=Ex,yL(y,F(x;P)) (4)

最后我们求得的最优函数就是: F(X)=F(x;P) ,也就是我们最终想要拟合出来的模型。数值优化的方法是用来求解(3),而最终的参数P对应的结果可以表达成
P=Mm=0pm 的形式。

1.2 梯度下降

  梯度下降是最简单数值优化的方法之一,而对于(3)式来说,当前的梯度为

gm=gjm=[Φ(P) pj]p=pm1

其中
Pm1=m1i=0pi


pm=ρmgm


ρm=argminρΦ(Pm1ρgm)(5)

用有限的数据来估计模型


按照式(1)则有
{βm,amM1}=argminNi=1L(yi,βmh(xi;am))(6)
在这种情况确实得到的是最优解,但是复杂度太高,很难求解。所以可以选择“贪心”算法。即对于 m 1,2, M
(βm,am)=argminβ,ai=1NL(yi,Fm1(xi)+βh(xi;a))(7)

然后
Fm(x)=Fm1(x)+βmh(xi;am)(8)

在机器学习中,函数 h(x;am) 被称为弱学习器或者基于学习器,而这个迭代的过程被称为“boosting”。给一定一个 Fm1(x) ,我们就可以用之前所述的梯度下降法,来求解 β 以及 h(x;a) .。给定特定的loss L(y,F) h(x;a) ,式(7)的解式很难求的。给定一个 Fm1(x) , βmh(x;am) 可以被看成最佳的贪心算法,对 F(x) 的估计。
  求出损失函数在每一个训练数据的梯度,得出一个N维的向量。
gm(xii)={L(yi,F(xi))F(xi)}F(x)=Fm1(x)

但是这样求出来的梯度不能泛化的其他的数据上。一个方法是选择一个 h(x;am) 使得它求得的 hm={h(xi;am)} 尽可能的与 gm 平行
am=argmina,β[gm(xi)βh(xi;a)]2

求出a参数向量之后,就可以求出另外一个参数
βm=argmini=1Nl(yi,Fm1(xi)+βh(xi;am))

然后就可以更新
Fm(x)=Fm1(x)+βmh(x;am)

伪代码如下:
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值