如何避免 XGBoost 模型中的过拟合
机器算法验证
过拟合
助推
2022-03-12 04:35:42
1个回答
XGBoost(以及其他梯度提升机器程序)有许多参数可以调整以避免过度拟合。我会提到一些最明显的。例如我们可以改变:
- 使用的特征的比率(即使用的列);
colsample_bytree
. 较低的比率可避免过度拟合。 - 使用的训练实例的比率(即使用的行);
subsample
. 较低的比率可避免过度拟合。 - 树的最大深度;
max_depth
. 较低的值可避免过度拟合。 - 进行进一步拆分所需的最小损失减少;
gamma
. 较大的值可避免过度拟合。 - 我们的 GBM 的学习率(即我们用每棵连续的树更新我们的预测多少);
eta
. 较低的值可避免过度拟合。 - 叶子中所需的实例权重的最小总和,在某些应用中,这与节点中所需的最小实例数直接相关;
min_child_weight
. 较大的值可避免过度拟合。
此列表并不详尽,我强烈建议您查看XGBoost 文档以获取有关其他参数的信息。请注意,试图避免过度拟合可能会导致拟合不足,即我们正则化太多而无法学习相关信息。在这个问题上,人们可能想要考虑使用单独的验证集或简单的交叉验证(xgboost.cv()
例如通过)来监控 GBM 在执行更多迭代时的进度(即添加基础学习器)。这样就可以及早发现潜在的过度拟合问题。这与使用早期停止作为一种正则化形式密切相关;XGBoost 提供了一个early_stopping_rounds
与这种情况相关的论点。
最后,我还要指出,报告的班级不平衡(85-15)并不是很严重。使用默认值scale_pos_weight
1 可能就足够了。
其它你可能感兴趣的问题