GBDT 梯度提升决策树

来源:互联网 发布:内网域名和动态域名 编辑:程序博客网 时间:2024/05/17 03:30

背景知识

决策树



boosting

boosting提升方法可以表示为多个弱分类器的权重和:
这里写图片描述

其中的w是权重,Φ是弱分类器(回归器)的集合,其实就是一个加法模型(即基函数的线性组合)
boosting的前向分布算法,实际上是一个贪心算法,也就是在每一步求解弱分类器Φ(m)和其参数w(m)的时候不去修改之前已经求好的分类器和参数:
这里写图片描述
这里β代替w表示权重,图中的b是之前说的Φ,即弱分类器。

根据损失函数的不同,衍生了不同的boosting算法:
这里写图片描述

所谓的Gradient Boosting 其实就是在更新的时候选择梯度下降的方向来保证最后的结果最好,一些书上讲的“残差” 方法其实就是L2Boosting吧,因为它所定义的残差其实就是L2Boosting的Derivative。

GBDT

对于决策树,其实就是对特征空间的区域划分,每个区域返回某个值作为决策树的预测值,决策树有几个叶子节点就把空间划分了几部分,如:

这里写图片描述 这里写图片描述
那么树可以表示为:
这里写图片描述

其中,cj表示区域Rj的数值,组成了该决策树的参数:这里写图片描述, J表示树的叶子节点总数。

回归问题的前向分步算法:
这里写图片描述

在前向分步算法的第m步,给定当前模型fm-1(x),需求解:
这里写图片描述
得到第m棵数的参数。

当采用平方平方误差损失函数(L2Boosting)时,
这里写图片描述

其损失变为:
这里写图片描述

其中:
这里写图片描述
是上一轮模型的残差(residual),所以,对回归问题的提升树算法来说,第k轮迭代,只需输入上一轮的残差,即只需简单地拟合上一轮模型的残差。

总体算法步骤:
这里写图片描述


对比

与Adaboost: 二者都是通过加法模型对弱分类器进行线性组合,而AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值;GBDT通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。
与随机森林: 随机森林是bagging,GBDT是boosting。


Reference

http://blog.csdn.net/sb19931201/article/details/52506157
http://blog.csdn.net/dark_scope/article/details/24863289
http://www.jianshu.com/p/005a4e6ac775
http://www.36dsj.com/archives/21036

原创粉丝点击