概述
GBDT全称Gradient Boosting Decision Tree,梯度提升决策树,要理解GBDT的原理,首先理解一下GBDT中的Gradient Boosting 和Decision Tree
-
Decision Tree(决策树)
GBDT不论分类还是回归问题,使用的都是CART决策树,因为GBDT要拟合负梯度值,负梯度的值是连续的,所以选择回归 -
Gradient Boosting(梯度提升)
-
提升树
提升树算法目的就是拟合残差
验证:
- 假设我们前一轮迭代得到的学习器是:ft-1(x)
- 损失函数L(y,ft-1(x))
- 本轮迭代找到一个弱学习器ht(x)
- 最小化让本轮的损失L(y,ft(x))=L(y,ft-1(x),ht(x))
- 用平方损失函数
r=y-ft-1(x)是当前模型拟合数据的残差
结论:
对于提升树来说只需要简单地拟合当前模型的残差
1.负梯度
-
第t轮的第i个样本的损失函数的负梯度为:
-
平方损失为:
y表示真实值,f(x)表示预测值
-
负梯度(求导):
我们发现GBDT的负梯度就是残差,所以说对于回归问题,我们要拟合的就是残差
GBDT算法原理
- 初始化若学习器
- 迭代n=1,2,3…
-
对每个样本i=1,2,…,N,计算负梯度,即残差
-
将上步得到的残差作为样本新的真实值,并将数据作为下棵树的训练数据,得到一颗新的回归树fm (x),)其对应的叶子节点区域为Rjm j=1,2,…,J。其中J为回归树t的叶子节点的个数
-
对叶子区域j=1,2,…J计算最佳拟合值
-
更新强学习器
-
得到最终学习器
开始训练
- 初始化弱学习器:
-
损失函数为平方损失,因为平方损失函数是一个凸函数,直接求导,倒数等于零,得到c作为预测值,后边迭代计算方法一样
-
令导数等于0
-
所以初始化时,c取值为所有训练样本标签值的均值
- 对迭代轮数m=1,2,…,M:
-
计算负梯度
-
得到最后的强学习器:
-
.预测样本
GBDT需要将多棵树的得分累加得到最终的预测值