![50c7d8d7ab42b485ca1bbd107bb4295b.png](https://i-blog.csdnimg.cn/blog_migrate/7fef92f60d80e1ce0c4d01f5a6fd3962.jpeg)
概括
醒心:算法理念与硬核推导:AdaBoost下(从AdaBoost回归到GBDT回归)zhuanlan.zhihu.com![3c1fa101a495f284edac2c4408bd7f2d.png](https://i-blog.csdnimg.cn/blog_migrate/8b012602f64d9fae07de3a6bac7d5d93.jpeg)
上篇文章简单介绍了损失函数为平方损失的GBDT模型,并介绍了二分类AdaBoost与GBDT的关系,此篇文章重点介绍GBDT回归的总体思想(GBDT直接做二分类可得树桩AdaBoost)。AdaBoost在前向分步求解时由于基学习器输出是+-1,可直接确定损失最小时的本轮拟合目标,而且由于是指数损失因此又可以直接求导得到基学习器权重。但对于希望使用任意损失函数做加法boosting解决回归问题的算法来说,每一轮直接拟合残差较为困难,因此需要有一种更普适性的求解方案。
GBDT回归推导
训练集定义
1.GBDT回归加法模型表示为:
2.第m步优化目标:
a).求
由于
令
b).建立
假设CART对应的叶子节点区域为
得到第m个CART学习器:
更新此步强学习器:
初始化:
通俗解释:为什么拟合负梯度,我的理解是如果每步CART直接拟合真实值减预测值得到的残差,那么相当于拟合全部的存量信息,这个残差是一部到位的,但对于一般的损失函数来说,希望每一步进行大幅优化并不容易(如Huber损失),因此GBDT期望的是一步步的去拟合,得到多个CART进行累加,因此每一步去拟合负一阶梯度,就是希望损失函数能在本轮中下降负梯度平方和的大小。这有点像梯度下降,我们希望沿着梯度的方向一步步的走,而不是一次走完。另外如果损失函数为平方函数时,损失函数的负梯度恰好就是残差。
GBDT分类
主要有两个方法,一个是用指数损失函数的基函数加权GBDT,此时GBDT求解得到树桩Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法,就是你和类别的预测概率值和真实概率值的差(一阶负梯度)。
GBDT二元逻辑回归
在逻辑回归中,利用sigmoid curve是将sigmoid curve将回归值映射为0-1分布,条件概率表达式如下:
通过极大似然思想推导出损失函数表达式:
如果label取
求导
对于当前CART决策树叶子节点的最佳负梯度拟合值为:
上式比较难优化,使用Newton-Raphson近似公式,求得最小值情况下