从AdaBoost到GBDT(part 2)


注:本文假设读者已经有了AdaBoost和GBDT的背景知识。


看到网上关于AdaBoost和GBDT资料都不少,可是鲜有资料介绍他们联系,刚好之前有看过,最近复习到此,觉得有所收获,所以记录下来。此为读书笔记,若有错误,请予纠正。

前情概要:涉及公式较多,如要阅读,请提前找一个安静场所。

转载请标明出处:http://blog.csdn.net/wuzqchom/article/details/69487888
本篇文章分为两部分,第一部分:http://blog.csdn.net/wuzqChom/article/details/69487847

从AdaBoost到GBDT

若上面的式子使用梯度下降求解,则可将式子变换为:

minηminh1NNn=1exp(yn(T1t=1αtgt(xn)+ηh(xn)))

h 可以想象为一个方向,η 为往该方向走多远,和梯度下降完全一个概念。对应到AdaBoost上面,h 即为一棵决策树,而η 即为该树的权重。
上面的AdaBoost损失函数是指数函数,把它generalize一点:

minηminh1NNn=1err(T1t=1αtgt(xn)+ηh(xn),yn)

上面的式子就是GradientBoost 的优化式子了。但是损失函数要求平滑。
err 损失函数换成squared-error,并一阶泰勒展开(先不考虑η ):

minh1Nn=1Nerr(t=1T1αtgt(xn)sn+ηh(xn),yn)minh1Nn=1Nerr(sn,yn)+1Nn=1Nηh(xn)2(snyn)

由于我们现在是要优化关于h 的函数,所以第一项可以看成是常数,还记得吗,h 即相当于确定了一个方向而已,至于走多远,我们可以交由η 来决定(即第二步优化确定),但我们目前仅关注应该往哪个方向走。我们可以加限制条件令h 的长度为1,但是约束化的优化问题比较不容易求,可以加一个L2正则转换成无约束的优化问题。上式就变成了:

minhC1+ηNn=1N(h(xn)2(snyn)+(h(xn))2)=C1+ηNn=1N(C2+(h(xn)(ynsn))2)

C1,C2 为常数项,第一个式子到第二个式子用了配方,并把无关项设为常数C2 .
从上面的式子可以看出,加了正则化的优化目标即为求平方错误的回归问题{xn,ynsn} ,ynsn 即为残差。GBDT每一棵决策树就是为了拟合残差,这是朝着h 方向走的结果,而h 为一个函数,在GBDT当中即为一棵决策树。
好了,现在我们方向找到了,究竟应该朝这个方向走多远,那么就是η 来决定啦。优化η 容易得多,即为单变量的优化问题(注意此时已经从g 的集合h 中找到了最优的gt ):
minη1Nn=1N(yn(t=1T1αtgt(xn)sn+ηgt(xn)yn))2=1N((ynsn)ηgt(xn))2

又见残差!!
经过上述的优化之后,我们就得到了αtgt ,对了,上述所说的准确来说还只是GB回归问题,假如我们的每一个g 都是有决策树学术来的,那么就是我们要的GBDT了。
简单总结一下GBDT的过程:
  1. 用决策树算法学,以{xn,ynsn} 为目标学得棵决策树gt
  2. 在学得gt 之后,解{gt(xn) ,ynsn }的单变量的线性回归问题得到αt
  3. 更新sn=sn+αtgt(xn)
  4. 重复1-3,到一定次数为止,返回G(x)=Tt=1αtgt(x)

ps:
GBDT实际上是用回归树来作为基分类器,所以用GBRT可能更合适一点。

The end.

参考资料:林轩田. 机器学习技法课程 Lecture 11.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章