理解GBDT算法(二)——基于残差的版本
2015-03-30 16:18
169 查看
GBDT算法有两种描述思路,一个是基于残差的版本,一个是基于梯度gradient的版本。这篇我们先说说基于残差的版本。
前面一篇博文已经说了该版本的大致原理,请参考。
/article/8271804.html
这篇我们再总结一个几个注意点:
这个版本的核心思路:每个回归树学习前面树的残差,并且用shrinkage把学习到的结果大步变小步,不断迭代学习。其中的代价函数是常见的均方差。
其基本做法就是:先学习一个回归树,然后“真实值-预测值*shrinkage”求此时的残差,把这个残差作为目标值,学习下一个回归树,继续求残差……直到建立的回归树的数目达到一定要求或者残差能够容忍,停止学习。
我们知道,残差是预测值和目标值的差值,这个版本是把残差作为全局最优的绝对方向来学习。
这个版本更加适用于回归问题,线性和非线性的均可,而且在设定了阈值之后还可以有分类的功能。
当时该版本使用残差,很难处理纯回归以外的问题。版本二中使用梯度,只要建立的代价函数能够求导,那么就可以使用版本二的GBDT算法,例如LambdaMART学习排序算法。
Shrinkage和梯度下降法中学习步长alpha的关系。shrinkage设小了只会让学习更慢,设大了就等于没设,它适用于所有增量迭代求解问题;而Gradient的步长设小了容易陷入局部最优点,设大了容易不收敛。它仅用于用梯度下降求解。这两者其实没太大关系。
前面一篇博文已经说了该版本的大致原理,请参考。
/article/8271804.html
这篇我们再总结一个几个注意点:
这个版本的核心思路:每个回归树学习前面树的残差,并且用shrinkage把学习到的结果大步变小步,不断迭代学习。其中的代价函数是常见的均方差。
其基本做法就是:先学习一个回归树,然后“真实值-预测值*shrinkage”求此时的残差,把这个残差作为目标值,学习下一个回归树,继续求残差……直到建立的回归树的数目达到一定要求或者残差能够容忍,停止学习。
我们知道,残差是预测值和目标值的差值,这个版本是把残差作为全局最优的绝对方向来学习。
这个版本更加适用于回归问题,线性和非线性的均可,而且在设定了阈值之后还可以有分类的功能。
当时该版本使用残差,很难处理纯回归以外的问题。版本二中使用梯度,只要建立的代价函数能够求导,那么就可以使用版本二的GBDT算法,例如LambdaMART学习排序算法。
Shrinkage和梯度下降法中学习步长alpha的关系。shrinkage设小了只会让学习更慢,设大了就等于没设,它适用于所有增量迭代求解问题;而Gradient的步长设小了容易陷入局部最优点,设大了容易不收敛。它仅用于用梯度下降求解。这两者其实没太大关系。
相关文章推荐
- 理解GBDT算法(三)——基于梯度的版本
- 理解GBDT算法(三)——基于梯度的版本
- 理解GBDT算法(三)——基于梯度的版本
- 写出一个你自己的MVC框架-基于对springMVC源码实现和理解(8):总结和对以后版本的展望
- 写出一个你自己的MVC框架-基于对springMVC源码实现和理解(8):总结和对以后版本的展望
- SQL Server 2005使用基于行版本控制的隔离级别初探(2) -- READ_COMMITTED_SNAPSHOT
- 架设基于Apache服务器的SVN版本库
- 基于Apache Http Server和SVN Server的版本管理方案(二)
- SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块
- SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块
- SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块
- 对图像处理中的面向对象和基于基元的理解
- 基于web的版本控制工具
- 理解基于Acegi的权限控制系统(图)- -
- SQL Server 2005使用基于行版本控制的隔离级别初探
- 提一个基于Access版本的ASP.NET provider模型
- 一个基于实例(向量)的关于开发跨版本ActionScript应用程序的讨论
- SQL Server 2005使用基于行版本控制的隔离级别初探(3) -- SNAPSHOT
- 基于web的版本控制工具