xgboost 中的 max_delta_step

机器算法验证 助推
2022-03-14 22:08:41

我无法从文档中的描述中完全理解此参数的工作原理

[max_delta_step [default=0]] 我们允许每棵树的权重估计的最大增量步长。如果该值设置为 0,则表示没有约束。如果将其设置为正值,则有助于使更新步骤更加保守。通常不需要这个参数,但当类极度不平衡时,它可能有助于逻辑回归。将其设置为 1-10 的值可能有助于控制更新

我不清楚“增量步长”指的是什么,特别是因为权重已经有了解析解,并且权重已经受到eta. 有人可以阐明这个参数在算法中的位置,“增量步”指的是什么,以及它对极度不平衡的数据集有什么帮助?

1个回答

eta 引入了“相对”正则化(将权重乘以一个常数因子),但在 hessian 几乎为零的极端情况下(例如当我们有非常不平衡的类时)这还不够,因为权重(其中计算 hessian 在分母)变得几乎无限。所以 max_delta_steps 所做的是在应用 eta 校正之前引入一个“绝对”正则化来限制权重。

如果您看到 xgboost 的代码(文件 parameter.h,过程 CalcWeight),您可以看到这一点,并且您会看到其他正则化参数 lambda 和 alpha(相当于 L1 和 L2 正则化)的效果。在特殊的 lambda 效应中补充(或替代)max_delta_step,因为 lambda 大于零,所以权重更小。