1. GBDT的核心思想与梯度提升
GBDT 全称为 Gradient Boosting Decision Tree,即梯度提升决策树。它是一种基于梯度下降优化的提升算法,通过逐步构建决策树来提高模型的预测性能。GBDT 的核心思想是:每一轮新加入的树对当前模型的预测误差进行拟合,即通过构建多个弱学习器(回归树)以最小化整体损失函数,从而提升模型的准确性。
在梯度提升框架中:
- 损失函数表示模型的拟合效果(例如:均方误差或交叉熵)。
- 梯度提升指的是,使用每一步的损失函数的负梯度方向来拟合新的弱学习器,以此逐步优化损失函数。
2. GBDT的数学表达与推导
假设数据集为
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi),其中
i
=
1
,
2
,
…
,
n
i = 1, 2, \ldots, n
i=1,2,…,n,模型的目标是找到一个函数
F
(
x
)
F(x)
F(x) 来最小化损失函数
L
(
y
,
F
(
x
)
)
L(y, F(x))
L(y,F(x))。因此,GBDT的目标可以表示为:
F
∗
(
x
)
=
arg
min
F
∑
i
=
1
n
L
(
y
i
,
F
(
x
i
)
)
F^*(x) = \arg \min_{F} \sum_{i=1}^n L(y_i, F(x_i))
F∗(x)=argFmini=1∑nL(yi,F(xi))
2.1 迭代更新模型
GBDT的模型是逐步构建的。假设模型当前已经构建了
m
m
m 轮决策树
F
m
(
x
)
F_m(x)
Fm(x),则在第
m
+
1
m+1
m+1 轮中,我们希望增加一个新模型
h
m
+
1
(
x
)
h_{m+1}(x)
hm+1(x) 以进一步减少当前的损失:
F
m
+
1
(
x
)
=
F
m
(
x
)
+
γ
h
m
+
1
(
x
)
F_{m+1}(x) = F_m(x) + \gamma h_{m+1}(x)
Fm+1(x)=Fm(x)+γhm+1(x)
其中, γ \gamma γ 是步长(也称为学习率),用来控制每一轮新加树对模型的影响。
2.2 负梯度拟合
要找到合适的
h
m
+
1
(
x
)
h_{m+1}(x)
hm+1(x),GBDT使用损失函数的负梯度作为近似的优化目标。具体来说,在第
m
m
m 轮中,计算第
i
i
i 个样本的残差(即负梯度)为:
r
i
(
m
)
=
−
[
∂
L
(
y
i
,
F
(
x
i
)
)
∂
F
(
x
i
)
]
F
(
x
)
=
F
m
(
x
)
r_{i}^{(m)} = - \left[ \frac{\partial L(y_i, F(x_i))}{\partial F(x_i)} \right]_{F(x) = F_m(x)}
ri(m)=−[∂F(xi)∂L(yi,F(xi))]F(x)=Fm(x)
然后我们训练一个新的回归树 h m + 1 ( x ) h_{m+1}(x) hm+1(x) 去拟合这些残差,即使得 h m + 1 ( x ) h_{m+1}(x) hm+1(x) 尽可能接近 r i ( m ) r_{i}^{(m)} ri(m),即:
h m + 1 ( x ) ≈ r i ( m ) h_{m+1}(x) \approx r_{i}^{(m)} hm+1(x)≈ri(m)
2.3 学习率与模型更新
在找到新树
h
m
+
1
(
x
)
h_{m+1}(x)
hm+1(x) 后,使用一个学习率
γ
\gamma
γ 来更新模型:
F
m
+
1
(
x
)
=
F
m
(
x
)
+
γ
h
m
+
1
(
x
)
F_{m+1}(x) = F_m(x) + \gamma h_{m+1}(x)
Fm+1(x)=Fm(x)+γhm+1(x)
学习率是GBDT的一个重要参数,用于平衡新树对整体模型的影响。通常,较小的学习率会让模型更稳健,但需要更多的树以获得良好的性能。
3. 损失函数的选择
GBDT 作为一种框架,可以应用于多种损失函数的优化,因此适合不同的任务。常见的损失函数选择包括:
- 均方误差(MSE):用于回归任务,目标是最小化预测值与真实值之间的平方误差。
- 对数似然损失:用于二分类任务,使模型输出接近于真实的类别标签。
- 绝对误差:可用于对噪声更为稳健的回归任务。
不同损失函数的选择会影响梯度计算方式以及模型的表现,因此需根据具体任务选择合适的损失函数。
4. GBDT算法流程
完整的 GBDT 算法流程如下:
-
初始化模型:通常使用所有样本的均值作为初始预测 F 0 ( x ) F_0(x) F0(x)。
-
迭代训练:
- 对于每一轮
m
=
1
,
2
,
…
,
M
m = 1, 2, \ldots, M
m=1,2,…,M:
- 计算负梯度:对每一个样本计算当前损失函数的负梯度,作为新的目标值。
- 训练弱学习器:使用这些目标值训练新的决策树 h m ( x ) h_m(x) hm(x)。
- 计算学习率 γ m \gamma_m γm:通过一维线搜索,找到最佳学习率以最小化损失函数。
- 更新模型:通过 F m ( x ) = F m − 1 ( x ) + γ m h m ( x ) F_m(x) = F_{m-1}(x) + \gamma_m h_m(x) Fm(x)=Fm−1(x)+γmhm(x) 更新模型。
- 对于每一轮
m
=
1
,
2
,
…
,
M
m = 1, 2, \ldots, M
m=1,2,…,M:
-
最终预测:经过 M M M 轮训练后,得到最终的模型 F M ( x ) F_M(x) FM(x) 作为预测模型。
5. GBDT 的优缺点分析
优点:
- 强大的预测能力:GBDT 可以在回归、分类等任务中获得高精度的预测结果。
- 自动特征选择:树模型天然具有特征选择的功能,不需要进行特征归一化或标准化。
- 适合非线性关系:可以有效拟合数据中的非线性关系。
- 灵活的损失函数选择:可以根据任务定制不同的损失函数,使模型适应性更强。
缺点:
- 训练速度较慢:GBDT 需要在多轮迭代中构建大量的决策树,计算开销较大。
- 容易过拟合:如果树的数量太多或树的深度较深,GBDT 容易过拟合训练数据。
- 参数调节复杂:GBDT 需要调节多个参数(树的数量、深度、学习率等),调优难度较大。
- 对缺失值敏感:GBDT 不能自动处理缺失值,数据预处理要求较高。
6. GBDT 常用的参数
常用的 GBDT 参数包括:
- n_estimators:树的数量。
- max_depth:单棵树的最大深度,控制模型复杂度。
- learning_rate:学习率,控制每棵树对最终模型的贡献。
- subsample:每轮训练时随机抽取的样本比例,适当减少可以提升模型的泛化能力。
- min_samples_split/min_samples_leaf:控制每个节点的最小样本数,防止过拟合。
总结
GBDT 是一种基于梯度下降的提升算法,逐步减少预测误差并构建强大的预测模型。通过合理选择损失函数和调节参数,GBDT 可以适用于回归、分类等多种任务。了解其数学推导和算法流程,有助于你更深入地理解其在实际问题中的应用和优势。
标签:函数,梯度,什么,损失,GBDT,hm,模型 From: https://blog.csdn.net/u013172930/article/details/143425603