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