3、XGBoost算法原理:梯度提升树回顾、XGBoost的目标函数与正则化、树模型与线性模型对比
3.1 梯度提升树(GBDT)回顾
梯度提升树(Gradient Boosting Decision Tree, GBDT)是XGBoost的算法基石。其核心思想是通过加法模型(Additive Model)与前向分步算法(Forward Stagewise Algorithm),将多个弱学习器(通常是CART回归树)逐步叠加,构建一个强学习器。
GBDT的迭代过程可概括为:每一轮迭代都拟合损失函数关于当前模型预测值的负梯度,从而逐步降低整体偏差。
- 初始化:用一个常数值(如均值)初始化模型 \( f_0(x) = \arg\min_\gamma \sum_{i=1}^N L(y_i, \gamma) \)。
- 迭代:对于第 \( m = 1 \) 到 \( M \) 轮:
- 计算每个样本的负梯度(伪残差):\( r_{im} = -\left[ \frac{\partial L(y_i, f(x_i))}{\partial f(x_i)} \right]_{f=f_{m-1}} \)。
- 用回归树拟合伪残差 \( r_{im} \),得到树 \( h_m(x) \)。
- 通过线性搜索确定最优步长 \( \rho_m \),更新模型:\( f_m(x) = f_{m-1}(x) + \rho_m h_m(x) \)。
- 输出:最终模型 \( f_M(x) \)。
GBDT在金融风控中表现优异,但存在过拟合风险高、训练速度慢、缺乏正则化等局限。XGBoost正是在此基础上进行了系统性优化。
3.2 XGBoost的目标函数与正则化
XGBoost在GBDT的基础上,对目标函数进行了二阶泰勒展开,并显式引入了正则化项,从而在精度和泛化能力上实现双重提升。
3.2.1 目标函数定义
XGBoost的目标函数由损失项和正则化项两部分组成:
Obj(Θ) = Σᵢ L(yᵢ, ŷᵢ) + Σₖ Ω(fₖ)
其中:
- L(yᵢ, ŷᵢ):损失函数,衡量预测值 ŷᵢ 与真实值 yᵢ 的差异。常用损失包括平方损失(回归)、对数损失(分类)。
- Ω(fₖ):第 k 棵树的复杂度惩罚项,用于控制模型复杂度,防止过拟合。
3.2.2 二阶泰勒展开加速优化
在第 t 轮迭代时,XGBoost对损失函数进行二阶泰勒展开:
Obj⁽ᵗ⁾ ≈ Σᵢ [ L(yᵢ, ŷᵢ⁽ᵗ⁻¹⁾) + gᵢ fₜ(xᵢ) + ½ hᵢ fₜ²(xᵢ) ] + Ω(fₜ) + constant
其中:
- gᵢ = ∂_{ŷ⁽ᵗ⁻¹⁾} L(yᵢ, ŷ⁽ᵗ⁻¹⁾):一阶梯度(梯度)。
- hᵢ = ∂²_{ŷ⁽ᵗ⁻¹⁾} L(yᵢ, ŷ⁽ᵗ⁻¹⁾):二阶梯度(海森矩阵对角线元素)。
3.2.3 正则化项详解
XGBoost的正则化项定义如下:
Ω(f) = γ T + ½ λ Σⱼ wⱼ² + α Σⱼ |wⱼ|
各参数含义及在金融风控中的作用:
| 参数 | 含义 | 金融风控作用 |
|---|---|---|
| γ (gamma) | 叶子节点数量的惩罚系数 | 控制树的分裂次数,防止模型过于复杂导致过拟合历史数据 |
| λ (lambda) | L2正则化系数(权重衰减) | 平滑叶子节点权重,提升模型对噪声样本的鲁棒性 |
| α (alpha) | L1正则化系数 | 产生稀疏解,自动进行特征选择,剔除冗余变量 |
| T | 树中叶子节点的总数 | 直接限制树的规模,降低过拟合风险 |
| wⱼ | 第 j 个叶子节点的权重(输出值) | 权重越小,模型对单个样本的依赖越低 |
3.2.4 结构分数与分裂增益
XGBoost通过结构分数(Structure Score)来评估一棵树的质量,并据此决定最优分裂点。移除常数项后,目标函数可简化为:
Obj⁽ᵗ⁾ = Σⱼ [ Gⱼ wⱼ + ½ (Hⱼ + λ) wⱼ² ] + γ T
其中 \( Gⱼ = Σ_{i∈Iⱼ} gᵢ \),\( Hⱼ = Σ_{i∈Iⱼ} hᵢ \)。对 wⱼ 求导可得最优权重:
wⱼ* = - Gⱼ / (Hⱼ + λ)
代入后得到最小目标值(结构分数):
Obj* = -½ Σⱼ [ Gⱼ² / (Hⱼ + λ) ] + γ T
分裂时的增益(Gain)定义为分裂前后结构分数的差值:
Gain = ½ [ G_L²/(H_L+λ) + G_R²/(H_R+λ) - (G_L+G_R)²/(H_L+H_R+λ) ] - γ
只有当 Gain > 0 时,分裂才会被采纳,否则剪枝。γ 在此充当了最小分裂阈值的角色。
3.3 树模型与线性模型对比
在金融风控特征回放评审中,理解树模型(如XGBoost)与线性模型(如逻辑回归)的本质差异,是选择合适算法的基础。下表从多个维度进行系统对比:
| 对比维度 | 树模型(XGBoost) | 线性模型(逻辑回归) |
|---|---|---|
| 特征关系 | 自动捕捉非线性、特征交互 | 仅能表达线性关系,需手动构造交叉项 |
| 可解释性 | 中等(可通过特征重要性、SHAP值解释) | 高(权重系数直接反映影响方向与大小) |
| 对缺失值处理 | 内置缺失值学习路径(默认方向) | 需提前填充或删除缺失样本 |
| 特征缩放要求 | 不需要(基于分裂阈值,不受量纲影响) | 需要(梯度下降依赖特征尺度) |
| 过拟合风险 | 较高(需正则化、早停、调参控制) | 较低(L1/L2正则化可有效控制) |
| 训练速度 | 较慢(需构建多棵树,但XGBoost已大幅优化) | 快(闭式解或快速收敛) |
| 适用场景 | 高维、非线性、特征间存在复杂交互(如欺诈检测) | 低维、线性可分、强解释性要求(如信用评分卡) |
| 金融风控典型应用 | 反欺诈模型、复杂交易异常检测 | 申请评分卡(A卡)、行为评分卡(B卡) |
3.3.1 决策边界对比
线性模型的决策边界是超平面(在二维空间中是直线),而树模型的决策边界是轴对齐的矩形区域(分段常数)。这种差异决定了它们对数据分布的适应能力:
- 线性模型:适合逻辑回归、线性SVM等,当特征与目标呈单调线性关系时表现最佳。
- 树模型:通过递归分割特征空间,可以拟合任意形状的决策边界,但容易在局部区域过拟合。
3.3.2 特征重要性度量差异
两种模型对特征重要性的定义完全不同:
| 模型类型 | 重要性度量方式 | 含义 |
|---|---|---|
| 线性模型 | 权重系数绝对值 |wⱼ| | 特征每变化一个单位,对预测值的影响幅度 |
| 树模型(XGBoost) | 增益(Gain)、覆盖度(Cover)、频率(Frequency) | 特征被选为分裂点的次数、带来的信息增益、覆盖的样本量 |