← 返回题目列表

XGBoost 如何控制过拟合?

高频 困难 第 14 / 25 题 更新于 2026/09/19
集成学习BaggingBoostingXGBoost

简化版

XGBoost 通过叶数惩罚 γ、叶权重 L2 λ、L1 α、树深/叶样本和行列采样共同正则化。γ 决定是否值得新增切分,λ/α 收缩叶值;参数作用层次不同,应结合训练—验证差距逐项调节。

详细版

  • 目标函数是训练损失加树复杂度 Ω(f)。

  • λ 增大分母,连续收缩叶权重。

  • α 对梯度和做 soft-threshold,可产生零叶权重。

  • γ 是每新增叶/切分的固定成本,提高分裂门槛。

  • subsample/colsample 注入随机性并降低树间相关。

完整版教学

一、正则直接进入分裂收益和叶值公式

二阶近似下,一个叶的最优权重由梯度和 G、Hessian 和 H 决定。

λ 防止小 H 叶产生过大权重。

切分收益扣除 γ 后若不为正,就不分裂;因此 γ 控结构,λ/α 控输出幅度,不能互相替代。

二、底层机制与公式

w* = -soft_threshold(G,alpha)/(H+lambda)
gain_split = 0.5*(G_L^2/(H_L+lambda)+G_R^2/(H_R+lambda)-G^2/(H+lambda))-gamma

三、带数字的推演

某叶 G=-10、H=5:λ=0 时 w=2,λ=5 时 w=1

若候选切分未扣 γ 的收益为 0.3,而 γ=0.5,则净收益为负,切分被拒绝。

四、方案对比

方案/对象核心特点代价或边界
gamma提高结构分裂门槛过大易欠拟合
lambda/alpha收缩叶输出控制幅度与稀疏
subsample/colsample随机采样增加方差但降相关

五、执行流程

先调树深/叶样本 -> 观察过拟合 -> 加行列采样
-> 调 lambda/alpha 与 gamma -> 配合 eta/early stop -> 多 seed 验证

六、边界条件与工程代价

特征尺度通常不像线性模型那样直接影响树阈值,但极端权重、Hessian 很小和类别不均衡仍会让叶值异常,需要 min_child_weight 等约束。

正则参数与 learning rate、树数耦合;强 λ 配小 η 又限制树数,可能多重收缩造成欠拟合。

记忆钩子:按层次记:gamma 管“长不长”,lambda/alpha 管“叶子说多大声”,采样管“每轮看多少数据”。

七、常见误区与追问

  • 误区:XGBoost 正则化只有 L1/L2。 结构惩罚、采样和叶约束也属于正则。

  • 追问:gamma 控制什么? 候选切分必须超过的额外复杂度成本。

  • 误区:lambda 与 gamma 可互换。 前者缩叶值,后者阻止结构增长。

  • 追问:L1 如何产生稀疏? 对 G 做 soft-threshold,小梯度叶可收缩到零。

  • 追问:如何判断过强? 训练与验证都差,树很浅或叶输出被过度压缩。

八、加强记忆

按层次记:gamma 管“长不长”,lambda/alpha 管“叶子说多大声”,采样管“每轮看多少数据”。

调参要避免多重收缩叠加。