注:本文假设读者已经有了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上面,h 即为一棵决策树,而η 即为该树的权重。
上面的AdaBoost损失函数是指数函数,把它generalize一点:
minηminh1N∑Nn=1err(∑T−1t=1αtgt(xn)+ηh(xn),yn)
上面的式子就是GradientBoost 的优化式子了。但是损失函数要求平滑。
将err 损失函数换成squared-error,并一阶泰勒展开(先不考虑η ):
minh1N∑n=1Nerr(∑t=1T−1αtgt(xn)sn+ηh(xn),yn)≈minh1N∑n=1Nerr(sn,yn)+1N∑n=1Nηh(xn)∗2(sn−yn)
由于我们现在是要优化关于
h 的函数,所以第一项可以看成是常数,还记得吗,
h 即相当于确定了一个方向而已,至于走多远,我们可以交由
η 来决定(即第二步优化确定),但我们目前仅关注应该往哪个方向走。我们可以加限制条件令
h 的长度为1,但是约束化的优化问题比较不容易求,可以加一个L2正则转换成无约束的优化问题。上式就变成了:
minhC1+ηN∑n=1N(h(xn)∗2(sn−yn)+(h(xn))2)=C1+ηN∑n=1N(C2+(h(xn)−(yn−sn))2)
C1,C2 为常数项,第一个式子到第二个式子用了配方,并把无关项设为常数
C2 .
从上面的式子可以看出,加了正则化的优化目标即为求平方错误的回归问题
{xn,yn−sn} ,
yn−sn 即为残差。GBDT每一棵决策树就是为了拟合残差,这是朝着
h 方向走的结果,而
h 为一个函数,在GBDT当中即为一棵决策树。
好了,现在我们方向找到了,究竟应该朝这个方向走多远,那么就是
η 来决定啦。优化
η 容易得多,即为单变量的优化问题(注意此时已经从
g 的集合
h 中找到了最优的
gt ):
minη1N∑n=1N(−yn(∑t=1T−1αtgt(xn)sn+ηgt(xn)−yn))2=1N((yn−sn)−ηgt(xn))2
又见残差!!
经过上述的优化之后,我们就得到了
α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.