前向分步算法与梯度提升(Gradient Boosting)的构建过程
字数 1015 2025-11-23 07:00:37
前向分步算法与梯度提升(Gradient Boosting)的构建过程
题目描述:
前向分步算法是一种用于构建加法模型的通用框架,而梯度提升是该框架下通过梯度下降优化任意可微损失函数的具体实现。我们将通过一个回归问题(使用平方损失函数)来演示如何逐步构建梯度提升模型,并解释其如何将弱学习器(如决策树)组合成强学习器。
解题步骤:
-
问题定义与初始化
- 给定训练集 {(x₁,y₁), (x₂,y₂), ..., (xₙ,yₙ)},目标是学习加法模型:F(x) = Σₘ ρₘh(x;θₘ)
- 初始化弱学习器:F₀(x) = argmin_ρ Σᵢ L(yᵢ, ρ)
对于平方损失函数 L(y,ŷ) = (y-ŷ)²/2,可得 F₀(x) = mean(y)(即所有样本标签的均值)
-
前向分步迭代(对 m=1 到 M)
a) 计算当前模型的伪残差:
rᵢₘ = -∂L(yᵢ, F(xᵢ))/∂F(xᵢ) | F(x)=F_{m-1}(x)
对于平方损失:rᵢₘ = yᵢ - F_{m-1}(xᵢ)(即真实值与当前预测值的差值)b) 拟合弱学习器 hₘ(x) 到伪残差数据 {(xᵢ, rᵢₘ)}
通常使用深度固定的决策树,通过最小化平方误差 Σᵢ [rᵢₘ - hₘ(xᵢ)]² 来学习c) 计算步长 ρₘ 通过线搜索:
ρₘ = argmin_ρ Σᵢ L(yᵢ, F_{m-1}(xᵢ) + ρhₘ(xᵢ))
对于平方损失:ρₘ = argmin_ρ Σᵢ [yᵢ - (F_{m-1}(xᵢ) + ρhₘ(xᵢ))]²
可得解析解 ρₘ = Σᵢ hₘ(xᵢ)rᵢₘ / Σᵢ hₘ(xᵢ)²d) 更新加法模型:
Fₘ(x) = F_{m-1}(x) + ν·ρₘhₘ(x)
其中 ν 是学习率(通常 0<ν≤1),用于控制每步更新的幅度,防止过拟合 -
输出最终模型
- 经过 M 次迭代后得到强学习器:F(x) = F₀(x) + νΣₘ ρₘhₘ(x)
- 对于新样本 x_{new},预测值为 F(x_{new})
关键理解:
- 伪残差指向损失函数下降最快的方向,相当于梯度下降中的负梯度
- 每步学习一个弱学习器来近似伪残差,实现沿损失函数梯度方向的优化
- 学习率 ν 通过缩减(shrinkage)提高模型稳定性和泛化能力
- 该框架可推广到任意可微损失函数(如绝对损失、Huber损失、交叉熵等)