#12131·xgboost

RFC: 重新考虑 XGBoost 中树模型学习的默认超参数

作者: RAMitchell创建于 2026年3月26日更新于 2026年9月14日
参数 当前 建议
eta 0.3 0.1
max_depth 6 10
min_child_weight 1 2
subsample 1.0 0.8
colsample_bytree 1.0 0.8
xgboost.train(..., num_boost_round=...) 10 300
xgboost.cv(..., num_boost_round=...) 10 300
sklearn 回退 n_estimators 100 300

| 参数未变化 |

理由说明

对于 XGBoost 的超参数调整能力,最有力的学术证据仍然是 Probst、Boulesteix 和 Bischl (2019)。他们的跨数据集研究表明,在包默认值下,XGBoost 具有可观的调整能力,而在更改默认值后,调整能力大幅下降。该论文还明确指出,在 XGBoost 中,调整 nroundseta 的联合收益相对较低,因为两者之间存在高度关联:当 nrounds 设置为较高时,eta 通常应设置为较低,反之亦然。(jmlr.org)

该论文还报告了学习的 XGBoost 默认值与当前发行的默认值之间的巨大差距。他们报告的最佳默认值包括非常小的 eta、小于 1 的 subsample、小于 1 的 colsample_bytree、大于 1 的 min_child_weight、远大于 6 的 max_depth,以及数千而不是数十或数百的 nrounds。具体报告的值根据指标而有所不同,但方向是一致的:学习率更小、回合预算更大、行/特征采样适度、树深度更深,以及叶节点增长稍微更加保守。(jmlr.org)

更广泛的 boosting 文献也指向了同一方向。Friedman 的原始梯度提升论文指出,缩小引入了两个相关的正则化参数,学习率 v 和组件数 M,并且降低 v 会提高 M 的最佳值。XGBoost 自己的参数文档…