xgboost算法中min_child_weight的解释

机器算法验证 机器学习 助推 黑森州
2022-01-20 10:26:20

xgboost 中 min_child_weight 参数定义如下:

孩子需要的实例权重(粗麻布)的最小总和。如果树划分步骤导致一个叶子节点的实例权重之和小于 min_child_weight,则构建过程将放弃进一步的划分。在线性回归模式中,这仅对应于每个节点中需要的最小实例数。越大,算法就越保守。

我已经阅读了很多关于 xgboost 的内容,包括原始论文(参见公式 8 和等式 9 之后的那个)、这个问题以及与 xgboost 相关的大部分内容,这些内容出现在谷歌搜索的前几页。;)

基本上我仍然不满意为什么我们对粗麻布的总和施加约束?我对原始论文的唯一想法是它与加权分位数草图部分(以及方程 3 加权平方损失的重新表述)有关,它具有hi作为每个实例的“权重”。

另一个问题与为什么它只是线性回归模式下的实例数有关?我猜这与平方和方程的二阶导数有关?

1个回答

对于回归,节点中每个点的损失为

12(yiyi^)2

这个表达式的二阶导数关于yi^1. 因此,当您对节点中所有点的二阶导数求和时,您会得到节点中的点数。在这里, min_child_weight 的意思是“一旦节点中的样本大小低于给定阈值,就停止尝试拆分”。

对于二元逻辑回归,节点中每个点的粗麻布将包含如下术语

σ(yi^)(1σ(yi^))

在哪里σ是 sigmoid 函数。假设您在一个纯节点(例如,节点中的所有训练示例都是 1)。然后所有的yi^'s 可能是很大的正数,所以所有的σ(yi^)'s 将接近 1,因此所有 hessian 项都将接近 0。如果节点中的所有训练示例都为 0,则类似的逻辑成立。这里,min_child_weight 的意思是“一旦达到一定程度就停止尝试分裂节点中的纯度和您的模型可以适合它”。

Hessian 是用于正则化和限制树深度的明智之举。对于回归,很容易看出如果您总是拆分为只有 1 个观察值的节点,您可能会如何过度拟合。同样,对于分类,如果您坚持拆分直到每个节点都是纯的,很容易看出您可能会如何过度拟合。