机器学习技法CH11:Gradient-Boosted-Decision-Tree
CH11:Gradient Boosted Decision Tree
AdaBoost Decision Tree
我们在AdaBoost-DTree中的第二步的DTree算法中加入了权重
如何实现这个呢 ?
我们回想一下在bootstrap中,我们把
我们可以提前先对数据处理一下,比如原来有三个数据(1,1)(2,2) (3,3),权重是2,1,0,也就是2个(1,1),1个(2,2),没有(3,3),那么我们把数据先改变为(1,1)(1,1)(2,2),然后再去随机抽取,这样就用 抽到的概率 代替了 权重的概念。
我们现在用sampling 来代替权重概念,还没有魔改DTree。
在AdaBoost中
我们发现如果我们把树做成了fully-grown,那么
我们可以用一些手段来限制长成fully-grwon,并且尽量让他不全作对:
- 可以pruned来限制树高
- 我们抽一部分数据来训练decision tree。
我们反正不需要做的太好,我们把树高限制在1层就好了
一层不就是decision stump了吗?
我们称之为AdaBoost-Stump ,他就是AdaBoost-DTree的一种特殊情况。
此时也不用做sampling了,因为此时
Optimization of AdaBoost
再来回顾一下AdaBoost中的权重迭代:
我们是否可以写成一个整体呢?即等两种形式都写成乘菱形的形式。
那么我们可以直接推出
其中橘色的一项就是AdaBoost最终返回的结果
在linear blending那一节提到过:linear blending和 线性模型+feature transform很像。(如下图)
而hard-margin SVM margin的表达式是:
这里的
这么来看,margin和voting score好像很相似,至少表达了同一种性质。
所以当迭代的次数多一些,
且这种新的错误指标还是0/1 error measure的上界,那我们能做到很好吗?
我们来证明一下:
首先回顾gradient descent:
同理我们考虑
在第
化简:
现在问题转化为了:如何最小化第二项。
我们现在把这个式子做一个平移:
那么我们最小化
那么谁在最小化
我们看下AdaBoost的算法流程:
很明显最小化
我们找到最好的h,也就是
这样找的最优的
我缓缓打出一个问号? 这个最好的
之前我们认为
AdaBoost中的这种steepest decent用到了函数式梯度。
Gradient Boosting
那么AdaBoost的本质是:
我们可以把这种思想带入任何其他的error measure方法:
这种算法就是GradientBoost。
由于任何error measure都可以使用,那么:
我们现在对回归任务/软分类问题也做GradientBoost。
我们下面再回归任务上来看看GradientBoost怎么用的:
和上一节AdaBoost一样,做Taylor展开:
那么
这么做看起来明显不是很合理,之前再gradient descent中我们限制了梯度向量的长度为一个定值。
那么谁来解决
我们首先加上了一个平方项,这个和最小化式子是相违背的,这样就帮助我们尽可能地减小
我们并不关注那些常数项,和最优化没关系。
最后我们推出我们只关心
那么现在的我们最小化的就是 这样一个square error:
现在问题转化为了:
发现又变成了squre error的形式,等于现在再做一次regression,不过我们的只求一个
最后把所有的东西合并在一起,提出Gradient Boosted Decision Tree(GBDT)算法
Gradient Boosted Decision Tree(GBDT)
:
Summary of Aggregation
首先是blending(即已经获得
uniform:适用于
的地位相差不大non-uniform:也就是linear blending,要小心overfit
- conditional:也就是stacking,要小心overfit
和第一种aggregation不同,这第二部分的aggregation是边学边获得
bagging:bootstrap抽取数据训练 + uniform合在一起
AdaBoost:处理
的线性组合- Decision Tree:处理conditional vote
还有一个GradientBoost,他的
我们还可以进行组合:
aggregation带来的好处是:
不拟合的时候aggregation相当于做feature transform帮你拟合,却也可以帮你regularization防止过拟合,因此选择合适的aggregation方法才可以获得更好的表现。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!