【问题标题】:Can we set minimum samples per leaf in XGBoost (like in other GBM algos)?我们可以在 XGBoost 中设置每个叶子的最小样本吗(就像在其他 GBM 算法中一样)?
【发布时间】:2021-08-31 16:18:12
【问题描述】:

我很好奇为什么xgBoost 不支持像sklearn 中经典的GB 分类器那样的min_samples_leaf 参数?如果我确实想控制最小值。单个叶子上的样本数,xgboost 中有什么解决方法吗?

【问题讨论】:

    标签: python scikit-learn xgboost


    【解决方案1】:

    您可以尝试使用min_child_weight。根据文档,这个参数:

    孩子需要的实例权重(粗麻布)的最小总和。

    对于具有 MSE 损失的回归问题,实例权重的总和将导致每个叶节点的样本最少,因为 MSE 损失的二阶导数等于 1。

    对于分类问题,它会产生一个不同的度量来表征叶子节点中样本的纯度(例如,对于二元分类,如果一个类的一部分样本严重支配叶子中的其他类——那里无需进一步拆分)。

    我不知道没有min_samples_leaf 参数的具体原因。我猜它对min_child_weight的干扰会给用户带来一些设计挑战和困惑。

    【讨论】:

    • 这很令人沮丧,因为显然min_samples_leafmin_child_weight 直观得多!
    【解决方案2】:

    xgboost 有min_child_weight,但在普通回归任务之外确实不同于最小样本。我不能说为什么不包括附加参数。请注意,尽管在二进制分类中,logloss hessian 为p(1-p),介于 0 和 1/4 之间,对于非常自信的预测,值接近于零;所以实际上设置min_child_weight 需要在每个叶子中设置许多当前不确定的行,这可能足够接近(或优于!)设置最小行数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-16
      • 2012-08-04
      • 2012-04-09
      • 1970-01-01
      • 2011-10-23
      • 2014-06-02
      • 2018-04-04
      • 2022-06-27
      相关资源
      最近更新 更多