GBDT(Gradient Boosting Decision Tree,梯度提升决策树
)是一种集成学习
算法,用于解决回归和分类
问题。它通过迭代地构建多个决策树
,并以梯度下降
的方式最小化损失函数
,以此来提升预测精度
。
GBDT的核心思想
是通过组合弱学习器(通常是决策树)形成一个强学习器。
GBDT的基本流程:
- 初始化模型:通常初始化为
所有训练样本预测值的平均值
或损失函数的最小化值。
- 计算残差:对于每一个样本,计算当前模型
预测值与真实值之间的残差
(损失函数的负梯度)。 - 构建决策树:使用残差作为新的目标变量,构建一个决策树,这个树
试图拟合残差。
- 更新模型:将新构建的决策树的
输出加权
加入到现有的模型中,形成一个新的模型。 - 重复步骤2-4:直到达到预定的迭代次数或满足停止条件为止。
GBDT的公式:
GBDT的目标是最小化训练数据的损失函数
。对于给定的损失函数,GBDT使用梯度下降
的思想来逐步改进模型。在每次迭代中,它构建一个决策树
来拟合损失函数关于当前模型预测的负梯度。
损失函数:
对于 回归
问题,常用的损失函数是均方误差(MSE)
,可以写作:
这里的参数说明如下:
- :样本的
真实值
。 - :模型的
当前预测值。
梯度计算:
在每次迭代中,我们计算损失函数的负梯度(残差)
作为目标变量,以便构建下一个决策树
。对于MSE损失函数,负梯度(残差)
可以表示为:
这里的参数说明如下:
- : 第 个样本在第 次迭代的
残差。
- : 这是
损失函数
关于预测值
的偏导数
,表示了损失函数的变化率
,即损失函数如何随着预测值的变化而变化。 - :
损失函数
,它量化了预测值
与实际值
之间的差异。
- : 第 个样本的
实际输出值
。 - : 模型对第 个样本 的
预测输出
。 - : 在迭代到第 轮之前,模型对样本 的
预测值
。这是一个累积的结果,由前面所有弱学习器(决策树)的预测叠加而成。
- : 这个符号表示在计算偏导数时,将
预测值
固定为当前模型
的输出值
。这意味着我们是在当前模型的基础上计算梯度
,以确定下一步如何调整模型以减少损失。
- 负号(-): 表示我们实际上计算的是
负梯度
,这是因为我们要沿着梯度的反方向移动
,以最小化损失函数
。在数学优化中,梯度指向函数增长最快的方向
,所以我们需要取负梯度
来找到下降最快的方向。
因此,公式 直观地表示了每个样本的残差
,即实际值与当前模型预测值之间的差值
。
在GBDT中,这些残差被用作下一棵树的训练目标
,以便进一步修正模型的预测,最终达到减小损失函数的目的。
更新模型:
在每次迭代中,我们使用残差
来构建决策树 ,然后更新模型:
这里的参数说明如下:
- :在第 次
迭代后模型的预测值。
- :在第 次
迭代中构建的决策树的输出。
- :学习率,
控制每次迭代中模型更新的幅度。
总结:
GBDT通过迭代地拟合损失函数的负梯度
来逐步优化模型。在每一次迭代中,它都会基于当前模型
的预测和真实的输出之间的差距
来训练一个新的决策树,然后将这个决策树的预测值加权
加入到现有的模型中,以期减少总体的损失
。这种迭代过程使得GBDT能够处理复杂的非线性关系
,并且在很多情况下比单独的决策树有更好的泛化能力。