在构建决策树时,需要选择最优的分裂点来最大化分裂增益。分裂增益是衡量分裂前后模型性能提升的一个指标。在LightGBM中,分裂增益的计算公式如下: G a i n = 1 2 ( ( ∑ i ∈ L g i ) 2 ∑ i ∈ L h i + λ + ( ∑ i ∈ R g i ) 2 ∑ i ∈ R h i + λ − ( ∑ i ∈ P g i ) 2 ∑ i ∈ P h i + λ ) − γ Gain = \frac{1}{2} \left( \frac{(\sum_{i \in L} g_i)^2}{\sum_{i \in L} h_i + \lambda} + \frac{(\sum_{i \in R} g_i)^2}{\sum_{i \in R} h_i + \lambda} - \frac{(\sum_{i \in P} g_i)^2}{\sum_{i \in P} h_i + \lambda} \right) - \gamma Gain=21(∑i∈Lhi+λ(∑i∈Lgi)2+∑i∈Rhi+λ(∑i∈Rgi)2−∑i∈Phi+λ(∑i∈Pgi)2)−γ 其中, L L L、 R R R和 P P P分别表示分裂后左子树、右子树和分裂前父节点的样本集合, g i g_i gi和 h i h_i hi分别是样本(i)的梯度和二阶导数, λ \lambda λ和 γ \gamma γ是正则化参数。通过遍历直方图的每个桶,计算每个可能的分裂点的分裂增益,选择分裂增益最大的点作为最优分裂点。
(三)梯度提升树的组合
模型更新
在每一轮迭代中,构建了一个最优的决策树后,需要将这个树加入到模型中,并更新模型的预测值。对于每个样本,模型的预测值是所有已构建的决策树的预测值之和。具体来说,如果第(t)轮迭代构建的决策树为(T_t(x)),模型的预测值更新公式为: F t ( x ) = F t − 1 ( x ) + ν T t ( x ) F_t(x) = F_{t - 1}(x) + \nu T_t(x) Ft(x)=Ft−1(x)+νTt(x) 其中, F t − 1 ( x ) F_{t - 1}(x) Ft−1(x)是上一轮迭代的模型预测值,(\nu)是学习率,用于控制每棵树对模型更新的贡献程度。
损失函数的优化
LightGBM的目标是通过不断更新模型,使得模型的损失函数最小化。对于不同的任务,损失函数的形式不同。例如,在二分类任务中,常用的损失函数是二元交叉熵损失函数: L ( y , F ( x ) ) = − 1 N ∑ i = 1 N [ y i log ( p i ) + ( 1 − y i ) log ( 1 − p i ) ] L(y, F(x)) = -\frac{1}{N} \sum_{i = 1}^{N} [y_i \log(p_i) + (1 - y_i) \log(1 - p_i)] L(y,F(x))=−N1i=1∑N[yilog(pi)+(1−yi)log(1−pi)] 其中,(y_i)是样本的真实标签,(p_i)是模型预测的正类概率,(N)是样本数量。在每一轮迭代中,通过构建决策树来拟合损失函数的负梯度,从而逐步优化模型的预测性能。