本文参考:GBDT算法原理以及实例理解_Freeman_zxp的博客-CSDN博客_gbdt
1、GBDT构建树的树类型,最佳划分点策略
GBDT使用的决策树是CART回归树。不使用分类树的原因是,GBDT每次迭代拟合的是梯度值,它是连续值所以要用回归树。
2、提升树(Boosting Tree)算法过程
3、梯度提升树与提升树的区别,并公式推导原因
使用损失函数的负梯度作为提升树算法中残差的近似值。
因为当损失函数是平方损失时,每一步优化较简单。但是对于一般损失函数,则每一步优化不那么容易,所以提出了损失函数负梯度近似替代残差的方法。
推导如下:
f(x)在xk-1的一阶泰勒展开如下:
将xk代入可得:
f(x)转换为损失函数:
fk(x)代入可得:
提升树中:
因为每一次优化我们希望损失值越来越小,所以,即:
为了保证该式子恒成立,则:
4、GBDT算法流程
5、GBDT计算流程
取loss为平方误差时,
- 计算c=yi的平均值,f0(x)=c
- 遍历yi计算与f0(x)的残差
- 遍历j1~j4分别作为切分点,计算残差下left与right的平方差之和,选取最小的平方差对应的切分点为划分点,取分支下样本残差的平均值作为f1(x)的输出值
- 遍历yi计算f0(x)+αf1(x)的残差,重复步骤(3),直到生成N棵树