XGBoost 如何控制过拟合?
简化版
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 管“叶子说多大声”,采样管“每轮看多少数据”。
调参要避免多重收缩叠加。