机器学习技法笔记-Lecture 11 Gradient boosted decision tree
上一节的随机森林是 Bagging + DT,bagging和DT都是aggregation model
这一节从 Adaboost + DT 入手,从最优化的角度阐述了Adaboost干了啥,然后把Adaboost扩展至gradient boost,最后引出GBDT.
回忆一下adaboost方法,每一轮的Ein是假设g在data上错误的加权求和(u_t),然后对这个Ein求最小得到g_t,最后对这些g_t做线性组合。那现在这个g需要从树模型训练得到。怎么把u_t加到决策树模型的学习中去呢?
看一下带权重的决策树算法。联系之前学习的bagging,bootstrap抽样得到的重复样本的个数其实就和加权是一个性质的。
所以这里我们不改变决策树算法本身,而是对资料进行特别的抽样来达到 和乘以权重 相同的效果。
再回忆一下adaboost,它是一些比较weak的分类器组合。然后有个投票权重alpha,如果DT在所有的资料上构建完全生成树,那么Ein = 0,带权重的Ein = 0,epsilon=0,这个分类器在样本上太好了以至于adaboost不认为还需要继续寻找其他的g...
所以为了有weak的tree,我们需要对树进行剪枝,或者限制树的深度,让它们犯错,同时采用sampling的方式来达到 u_t的效果。
那么来看一个极端的例子。我们现在让所有的DT深度都是1,就是只分裂一次。那么就是decision stump。
所以adaboost-stump是 adaboost-DT的一个特殊例子。
好,adaboost-DT先说到这里。
下面是对adaboost本身一个更深入的分析。
对adaboost的权重进行了改写,第t轮的权重可以被前t-1轮的 alpha与g表示。
称
一个有趣的结论是
这里告诉了一个结论,随着adaboost的进行,样本点的权重的和越来越小。反推上去就是每个点的
注意接下来的推导是为了从最优化的角度来看adaboost究竟干了什么。。
因为adaboost让u_n的和越来越小,在最后结束的时候,有下式。
某种程度上是对右边式子的min(这里的逻辑过渡不太明白)
称
在每一轮最小化adaboost error function Eada.
回忆一下gradient descent,类似的,但是是将步长和方向换成了 权重和一个未知的函数h.
首先固定步长,把最好的h求出来。
推导后,最小化问题转化成
最优化问题求出来的h就是 min 带有权重的Ein的解 g_t。
得到g_t后再来求步长。得到的结果就是我们之前在adaboost里面讲的alpha。所以前面那章中求g_t和它对应的alpha权重其实就是在求解 minEada.
所以adaboost每一轮其实是在解这样的一个优化问题。每一轮得到的解就是新生成的g_t。
Gradientboost在adaboost上面进行了扩展,将指数损失函数
gradientboost for regression
这里把损失函数换成平方损失
求解最优的h其实就是对残差的回归。
求解最优的步长其实就是先将样本进过 g_t 的变换后,再对残差进行回归。
说了这么多。。其实和DT没什么关系。。现在把DT加进来,就是大名鼎鼎的GBDT了。。
回归的部分就是用CART来做,得到g_t。不记得了回顾一下前面怎么用树regression...
至此关于aggregation的部分都讲完了
总结: