注:本文假设读者已经有了AdaBoost和GBDT的背景知识。
看到网上关于AdaBoost和GBDT资料都不少,可是鲜有资料介绍他们联系,刚好之前有看过,最近复习到此,觉得有所收获,所以记录下来。此为读书笔记,若有错误,请予纠正。
前情概要:涉及公式较多,如要阅读,请提前找一个安静场所。
转载请标明出处:http://blog.csdn.net/wuzqchom/article/details/69487888
本篇文章分为两部分,第一部分:http://blog.csdn.net/wuzqChom/article/details/69487847
从AdaBoost到GBDT
若上面的式子使用梯度下降求解,则可将式子变换为:
minηminh1N∑Nn=1exp(−yn(∑T−1t=1αtgt(xn)+ηh(xn)))
h
可以想象为一个方向,
上面的AdaBoost损失函数是指数函数,把它generalize一点:
minηminh1N∑Nn=1err(∑T−1t=1αtgt(xn)+ηh(xn),yn)
上面的式子就是GradientBoost 的优化式子了。但是损失函数要求平滑。
将
err
损失函数换成squared-error,并一阶泰勒展开(先不考虑
η
):
由于我们现在是要优化关于 h 的函数,所以第一项可以看成是常数,还记得吗,
C1,C2 为常数项,第一个式子到第二个式子用了配方,并把无关项设为常数 C2 .
从上面的式子可以看出,加了正则化的优化目标即为求平方错误的回归问题 {xn,yn−sn} , yn−sn 即为残差。GBDT每一棵决策树就是为了拟合残差,这是朝着 h 方向走的结果,而
好了,现在我们方向找到了,究竟应该朝这个方向走多远,那么就是 η 来决定啦。优化 η 容易得多,即为单变量的优化问题(注意此时已经从 g 的集合
又见残差!!
经过上述的优化之后,我们就得到了 αt 和 gt ,对了,上述所说的准确来说还只是GB回归问题,假如我们的每一个 g 都是有决策树学术来的,那么就是我们要的GBDT了。
简单总结一下GBDT的过程:
- 用决策树算法学,以
{xn,yn−sn} 为目标学得棵决策树 gt 。- 在学得 gt 之后,解{ gt(xn) , yn−sn }的单变量的线性回归问题得到 αt 。
- 更新 sn=sn+αtgt(xn)
- 重复1-3,到一定次数为止,返回 G(x)=∑Tt=1αtgt(x)
ps:
GBDT实际上是用回归树来作为基分类器,所以用GBRT可能更合适一点。The end.
参考资料:林轩田. 机器学习技法课程 Lecture 11.