机器学习技法笔记-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最后学出来的G。。

一个有趣的结论是 

 

可以看成没有正规化的一种距离,并且是带正负号的。如果判断是对的,那么它应该就是正数。所以我们希望G表现好,就可以理解成希望是正的并且数值比较大(就想svm的margin比较大一样),等价于,根据上一页ppt,就也等价于

这里告诉了一个结论,随着adaboost的进行,样本点的权重的和越来越小。反推上去就是每个点的越来越大,所以adaboost能够达到large-margin的效果。

 

注意接下来的推导是为了从最优化的角度来看adaboost究竟干了什么。。

 

因为adaboost让u_n的和越来越小,在最后结束的时候,有下式。

某种程度上是对右边式子的min(这里的逻辑过渡不太明白)

为 exponential error(回忆一下之前的0/1 error, square error...),它可以将0/1error bound住。

 

在每一轮最小化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上面进行了扩展,将指数损失函数换成了任意的损失函数。每一轮求一个新的base hypothesis和步长。(难怪...additive model...换成additive的思路貌似更好理解一点)

 

gradientboost for regression

这里把损失函数换成平方损失

 

求解最优的h其实就是对残差的回归。

 

求解最优的步长其实就是先将样本进过 g_t 的变换后,再对残差进行回归。

 

说了这么多。。其实和DT没什么关系。。现在把DT加进来,就是大名鼎鼎的GBDT了。。

回归的部分就是用CART来做,得到g_t。不记得了回顾一下前面怎么用树regression...

 

 

至此关于aggregation的部分都讲完了

总结:

 

posted @ 2017-06-20 17:08  Akane  阅读(695)  评论(0编辑  收藏  举报