• 梯度提升树(GBDT)原理小结


      GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其实都是指的同一种算法。

    1. GBDT概述

      GBDT是集成学习Boosting中一员,与传统Adaboost不同。Adaboost利用弱学习器的误差率更新训练集的权重,这样迭代下去。GBDT使用前向分布算法迭代,弱学习器只能使用CART回归树,迭代思路与Adaboost也不同。

      在GBDT的迭代中,假设前一轮迭代得到的强学习器是 ft-1(x) ,损失函数是 L(y, ft-1(x)),那么本轮迭代的目标是找到一个CART回归树模型的弱学习器 ht(x),让本轮的损失函数 L(y, ft(x) + ht(x))最小。即本轮迭代找到一个决策树,让损失函数变小。

      GBDT的思想可以用一个通俗的例子解释,假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代,每一轮迭代,拟合的岁数误差都会减小。

      但是这个损失的拟合不好度量,损失函数各种各样,怎么找到一种通用的拟合方法?

    2. GBDT的负梯度拟合

      Freidman提出用损失函数的负梯度拟合本轮损失的近似值,进而拟合一个CART回归树。

      第 t 轮第 i 个样本的损失函数的负梯度表示为:

      利用(xi, rti) (i = 1,2,...m),拟合一个CART回归树,得到第 t 个回归树,对应叶节点区域 Rtj,j = 1,2,...J。其中 J 为叶节点的个数。

      针对每一个叶子节点里的样本,求出使损失函数最小,也就是拟合叶子节点最好的输出值  ctj 如下:

      这样得到本轮决策树拟合函数:

      从而得到本轮强学习器表达式:

      无论分类还是回归,通过损失函数的负梯度拟合,就可以用GBDT来解决。区别在于损失函数不同导致负梯度不同。

    3. GBDT回归算法

    输入:训练集样本 T = {(x, y1), (x2, y2),...(xm, ym)},最大迭代次数 T,损失函数 L

    输出:强学习器 f(x)

    (1) 初始化弱学习器

    (2) 对迭代轮数 t = 1,2,...T,有:

      a. 对样本 i=1,2,...m,计算负梯度

      

      b. 利用(xi, rti) (i=1,2,...m),拟合一个CART回归树,得到第 t 个回归树,其对应的叶子节点区域为 Rtj ,j = 1,2,3...J。其中 J 为叶子节点的个数。

      c. 对叶子区域 j = 1,2,3...J,计算最佳拟合值

      

      d. 更新强学习器

      

    (3). 得到强学习器 f(x) 的表达式

    4. GBDT分类算法

    分类算法的输出是离散的类别值,需要处理才能使用负梯度。

    两个方法:一是用指数损失函数,此时GBDT退化为Adaboost算法。二是用类似逻辑回归的对数似然损失函数方法。

  • 相关阅读:
    几种开源SIP协议栈对比OPAL,VOCAL,sipX,ReSIProcate,oSIP
    google开源的C++性能分析工具
    常用SNS开源系统比较
    推荐20个开源项目托管网站
    web2.0的几个开源项目
    开源src镜像
    Niagara解决设备连接应用的软件框架平台技术。
    Signing key has not been configured
    Mybatis 简单的CRUD 基于XML文件配置
    HDU4451Dressing(计数)
  • 原文地址:https://www.cnblogs.com/keye/p/11346779.html
Copyright © 2020-2023  润新知