码迷,mamicode.com
首页 > 其他好文 > 详细

从回归树到GBDT

时间:2015-03-17 22:00:10      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:

GBDT可以看做是由多棵回归树组成的,所以要理解GBDT,就要先理解回归树。回归树也是为了做预测,只是将特征空间划分成了若干个区域,在每个区域里进行预测,举个简单例子。

技术分享

图中的数据有两个特征:x1x2,根据这两个特征可以很容易地把数据分为左下角、左上角、右上角、右下角四个区域,这四个区域各有一个中心点(5,5)、(5,10)、(10,10)、(10,5),在对新数据做预测时,该数据落在哪个区域,就把该区域的中心点作为它的预测值。那么如何判断新数据将落在哪个区域呢?这时候“树”就派上用场了。树的根节点以x1做划分,小于8的划分到左子树,大于8的划分到右子树,在划分好的左右子树上再以x2做进一步的划分,小于8的划分为左叶子,大于8的划分为右叶子,如下图所示:

技术分享

可以看到,回归树也相当于一个映射,一个函数,即根据输入x1x2来求得输出 y,表达式如下:

y=h(x)=j=1JbjI(xRj)

其中,Rj就是一个个的区域,如第一张图中的“左下角”、“左上角”等,如果x属于Rj,那么它的预测值就是bjI()为指示函数,当括号内的式子成立时返回1,否则返回0。

GBDT

在很多情况下,一棵回归树的预测是不太准确的,我们可以尝试采用多棵回归树去预测,第 m 棵回归树可以表示为如下数学形式:

hm(x)=jJbjmI(xRjm)

假设共有M棵回归树,那么最终的预测结果为:
y=FM(x)=m=1Mhm(x)

表达成递归形式则为:
y=FM?1(x)+hM(x)

最完美的GBDT(就训练集而言,不考虑测试集)就是预测值 y 与目标值 t 相等,所以我们建立模型的目标就是令y=t,即:
t=FM?1(x)+hM(x)

GBDT也是从第一棵回归树开始的,不管效果怎么样,先建第一棵回归树,有了第一棵树,就可以通过上面的递归表达式建立第二棵,直到第M棵树,那么我们先看一下第二棵树怎么建立。对上面的递归式做个变形,即:
hM(x)=t?FM?1(x)

注意到hM(x)就是我们要建立的第2 (M=2)棵树,已有的是第一棵树,第一棵树一经建成就不变了,相当于一个已知的函数,那么t?FM?1(x)实际上就是我们在建第 M 棵树时想要得到的预测值。所以在建第二棵树时,我们将目标值 t 与第一棵树的预测值的差作为新的目标值,同样,在建第三颗树时,我们将目标值 t 与前两棵树的预测值的差作为新的目标值,直到第 M 棵树。t?FM?1(x)就是所谓的残差,这就是从残差的角度来理解GBDT。
注意到,GBDT的建树过程不是并行的,而是串行的,所以速度较慢,但所有的树一旦建好,用它来预测时是并行的,最终的预测值就是所有树的预测值之和。

拓展

GBDT实际上是由两部分组成:GB 和 DT,DT 意味着每个basic learner (weaker learner)是“树”的形式,而GB则是建树过程中依据的准则。DT 可以不变,而 GB 有多种形式,上述的残差只是其中的一种形式。注意到损失函数可以表示为:

ε=12t?F(x)2

该损失函数关于F(x)的导数(梯度)为:
dε/dF(x)=?t?F(x)

该损失函数在FM?1(x)处的导数(梯度)为:
dε/dF(x)|FM?1(x)=?t?FM?1(x)

所以在建立第 M 棵树时,新的目标值正好就是损失函数在 FM?1(x) 处的负梯度。众所周知,损失函数可以有多种形式,所以不同的损失函数就可以对应到不同的变种。

举例

本例仅用于说明大意,实际结果肯能不同,比如数据有两个feature:x1x2,对应的目标值为 t=sin(x1)+sin(x2),如下图所示:
技术分享
根据feature1可以建立一个回归树,预测结果如下:
技术分享
这两张图的差值用于建立第二棵回归树,这次选择了feature2,预测结果如下:
技术分享
上述两棵树的和就是正确的预测值。

从回归树到GBDT

标签:

原文地址:http://blog.csdn.net/zqxnum1/article/details/44337557

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!