真实面经题目 · 原创解析

XGBoost 是决策树还是回归树,训练过程怎样?

XGBoost 是梯度提升树框架,基学习器通常是 CART 回归树。即使用于分类任务,每棵树的叶子输出也是连续分数,用来拟合当前目标函数的一阶、二阶梯度残差方向。训练过程是逐轮加树,每轮基于当前预测计算梯度统计,枚举分裂点最大化增益,确定树结构和叶子权重,再更新整体预测。

出现于:哔哩哔哩 · 算法

60 秒回答模板

先回答归类:XGBoost 用的是 boosting 集成的 CART 回归树,不是单棵分类决策树。再讲目标:每轮新增一棵树最小化带正则项的目标函数。然后按训练步骤说明:初始化预测、算一阶二阶梯度、枚举分裂增益、生成树、计算叶子权重、 shrinkage 更新、重复到停止条件。

考点 CART 回归树
难度 真实面经题
回答目标 讲清原理、实现和边界

深入解析

01

模型层

XGBoost 是多棵树的加法模型,预测值等于初始分数加上每轮新树输出的累积。它的训练逻辑是 boosting:后一棵树不独立训练,而是在当前模型预测的基础上补偿目标函数仍然没有拟合好的方向。

02

树类型层

常用基学习器是 CART 回归树,因为叶子节点输出的是连续权重或分数增量,不是类别标签本身。即便做二分类或多分类,分类只体现在损失函数、logit 到概率的变换和多类输出组织上,树本身仍学习连续值。

03

目标层

每轮训练优化的是损失函数加正则项。正则项通常约束叶子数和叶子权重,配合最大深度、最小子节点权重、gamma 等超参数控制树复杂度;这也是 XGBoost 比单纯贪心拟合残差更稳定的原因。

04

梯度层

在第 t 轮,前 t-1 轮模型固定,对每个样本当前预测处的目标函数做二阶泰勒展开,得到一阶梯度 g 和二阶梯度 h。后续建树不直接拟合原标签,而是用这些梯度统计评估叶子权重和分裂收益。

05

分裂层

枚举候选特征和切分点时,分别累计左右子节点的 G、H 统计量,计算分裂前后的目标下降量作为增益。只有增益超过阈值且满足样本数、深度、子节点权重等限制才继续分裂,缺失值方向也会在训练中被选择。

06

更新层

树结构确定后,每个叶子的最优输出由该叶样本的梯度和二阶梯度聚合并结合 L2 正则得到,再乘学习率加入总模型。随后重新计算预测和梯度进入下一轮,直到树数、验证集早停或增益条件达到停止标准。

易错点

  • 回答成 XGBoost 是分类决策树,忽略叶子输出连续值。
  • 只说拟合残差,没有解释一阶和二阶梯度统计。
  • 把随机森林的并行独立建树过程套到 XGBoost 上。
  • 训练步骤里漏掉分裂增益和叶子权重计算。

面试官追问

为什么 XGBoost 要用二阶梯度信息?

二阶项提供局部曲率信息,能推导叶子权重和分裂增益的闭式计算,让分裂评估更稳定、更高效。

叶子节点权重是如何由梯度统计得到的?

每个叶子聚合样本的一阶梯度和二阶梯度,在带 L2 正则的二阶近似目标下得到最优连续输出权重。

分类任务中 XGBoost 的输出如何转成概率?

二分类通常累加树输出得到 logit,再经过 sigmoid 转成正类概率;多分类会为每类建分数并做 softmax。

学习率和树数量之间有什么关系?

较小学习率让每棵树贡献更保守,通常需要更多树;较大学习率收敛快但更容易过拟合或震荡。