我正在训练一个 xgboost 二进制分类模型。我拥有的数据大约是 600k,而正数仅为其中的 0.1%。我尝试使用 xgboost 提供的所有过拟合预防技术(调整 eta、gamma、min_child_weight、子样本特征/数据、提前停止等)。然而,我的模型要么强烈过拟合,但在测试集上有不错的度量,要么过拟合不太强,但总体性能很差。我在这里列出了两个训练结果(指标是 auc-pr),
| 曲线下面积 | 130棵树 | 3800棵树 |
|---|---|---|
| 火车 | 0.18 | 0.98 |
| 测试 | 0.05 | 0.45 |
| 验证(提前停止) | 0.06 | 0.46 |
我检查了数据泄漏,但似乎没有。我的问题是:
- 我可以使用具有 3800 棵树的模型,即使它过度拟合,它在测试集上也能获得不错的结果?
- 对于这种严重的类不平衡情况,我是否必须严格防止过度拟合?如果是这样,其他技术是什么?
- 我做错什么了吗?