我们可以在 XGBoost 中设置每片叶子的最小样本数吗(就像在其他 GBM 算法中一样)?
Can we set minimum samples per leaf in XGBoost (like in other GBM algos)?
我很好奇为什么在 sklearn 中使用 xgBoost doesn't support the min_samples_leaf
parameter like the classic GB 分类器?如果我确实想控制最小值。单个叶子上的样本数,xgboost 中是否有任何解决方法?
xgboost有min_child_weight
,但在普通的回归任务之外确实与最小样本不同。我不能说 为什么 不包括附加参数。请注意,尽管在二进制分类中,logloss hessian 是 p(1-p)
并且介于 0 和 1/4 之间,对于非常有信心的预测,其值接近零;所以实际上设置 min_child_weight
需要每个叶子中有许多当前不确定的行,这可能足够接近(或优于!)设置最小行数。
您可以尝试使用 min_child_weight
。根据文档,这个参数:
minimum sum of instance weight (hessian) needed in a child.
对于具有MSE损失的回归问题,实例权重之和将导致每个叶节点的样本最少,因为MSE损失的二阶导数等于1。
对于class化问题,它会产生不同的度量来表征叶节点中样本的纯度(例如,对于二进制class化,如果样本的比例一个 class 严重支配叶子中的另一个 class——没有必要进一步拆分它)。
我不知道没有 min_samples_leaf
参数的具体原因。我猜它对min_child_weight
的干扰会给用户带来一些设计上的挑战和困惑。
我很好奇为什么在 sklearn 中使用 xgBoost doesn't support the min_samples_leaf
parameter like the classic GB 分类器?如果我确实想控制最小值。单个叶子上的样本数,xgboost 中是否有任何解决方法?
xgboost有min_child_weight
,但在普通的回归任务之外确实与最小样本不同。我不能说 为什么 不包括附加参数。请注意,尽管在二进制分类中,logloss hessian 是 p(1-p)
并且介于 0 和 1/4 之间,对于非常有信心的预测,其值接近零;所以实际上设置 min_child_weight
需要每个叶子中有许多当前不确定的行,这可能足够接近(或优于!)设置最小行数。
您可以尝试使用 min_child_weight
。根据文档,这个参数:
minimum sum of instance weight (hessian) needed in a child.
对于具有MSE损失的回归问题,实例权重之和将导致每个叶节点的样本最少,因为MSE损失的二阶导数等于1。
对于class化问题,它会产生不同的度量来表征叶节点中样本的纯度(例如,对于二进制class化,如果样本的比例一个 class 严重支配叶子中的另一个 class——没有必要进一步拆分它)。
我不知道没有 min_samples_leaf
参数的具体原因。我猜它对min_child_weight
的干扰会给用户带来一些设计上的挑战和困惑。