gbdt算法_算法思想与硬核推导:GBDT

50c7d8d7ab42b485ca1bbd107bb4295b.png

概括

醒心:算法理念与硬核推导:AdaBoost下(从AdaBoost回归到GBDT回归)​zhuanlan.zhihu.com
3c1fa101a495f284edac2c4408bd7f2d.png

上篇文章简单介绍了损失函数为平方损失的GBDT模型,并介绍了二分类AdaBoost与GBDT的关系,此篇文章重点介绍GBDT回归的总体思想(GBDT直接做二分类可得树桩AdaBoost)。AdaBoost在前向分步求解时由于基学习器输出是+-1,可直接确定损失最小时的本轮拟合目标,而且由于是指数损失因此又可以直接求导得到基学习器权重。但对于希望使用任意损失函数做加法boosting解决回归问题的算法来说,每一轮直接拟合残差较为困难,因此需要有一种更普适性的求解方案。

GBDT回归推导

训练集定义

,弱学习器数量
,任意弱CART学习器

1.GBDT回归加法模型表示为:

2.第m步优化目标:

a).求

处做一阶泰勒近似:

由于

已知,目标为转换为:

即可。因此当前CART的学习目标就是损失函数在
负一阶梯度值。

b).建立

,其拟合目标集合为

假设CART对应的叶子节点区域为

,对叶子区域
,计算使得损失函数最小时的节点最佳拟合值:

得到第m个CART学习器:

更新此步强学习器:

初始化:

初始化为树桩,
可表示为:
通俗解释:为什么拟合负梯度,我的理解是如果每步CART直接拟合真实值减预测值得到的残差,那么相当于拟合全部的存量信息,这个残差是一部到位的,但对于一般的损失函数来说,希望每一步进行大幅优化并不容易(如Huber损失),因此GBDT期望的是一步步的去拟合,得到多个CART进行累加,因此每一步去拟合负一阶梯度,就是希望损失函数能在本轮中下降负梯度平方和的大小。这有点像梯度下降,我们希望沿着梯度的方向一步步的走,而不是一次走完。另外如果损失函数为平方函数时,损失函数的负梯度恰好就是残差。

GBDT分类

主要有两个方法,一个是用指数损失函数的基函数加权GBDT,此时GBDT求解得到树桩Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法,就是你和类别的预测概率值和真实概率值的差(一阶负梯度)。

GBDT二元逻辑回归

在逻辑回归中,利用sigmoid curve是将sigmoid curve将回归值映射为0-1分布,条件概率表达式如下:

通过极大似然思想推导出损失函数表达式:

如果label取

则损失函数可写为

求导

对于当前CART决策树叶子节点的最佳负梯度拟合值为:

上式比较难优化,使用Newton-Raphson近似公式,求得最小值情况下

具体表达式为:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值