次优的早期停止可防止机器学习中的过度拟合?



我一直在使用 xgboost 的早期停止功能来处理各种问题陈述,主要是分类。但是在处理不同领域的几个数据集时,我有以下观察

结果
  • 在最小评估误差点,但训练和测试(用于评估以停止训练轮次(误差之间的差异相对较高,模型的行为似乎好像存在过度拟合。

  • 在这种情况下,当我考虑在训练和测试(训练期间的评估数据(错误相当相似(尽管评估误差不是最小值(时停止训练轮次时,模型的性能更好,并且根据误差项估计。

因此,问题是:训练轮数是否应该比最佳点(训练和测试之间存在非常高的发散误差(eval(,尽管验证误差较低(更早停止?

请假设已尽一切努力正确拆分数据集以进行训练、测试、验证等。

谢谢。

在 xgboost 中提前停止的工作原理如下:

  • 它会查看"监视列表"的最后一个元组(通常您放置验证/测试集(在那里
  • 它通过您的评估指标评估此集
  • 如果此评估在x次未更改(其中x = early_stopping_rounds(
  • 模型停止训练,并知道最佳迭代的位置(对测试/验证集进行最佳评估(

是的,您的模型将使用x不必要的迭代(助推器(构建。但假设您有一个训练有素的xgboost.Boosterclf

# Will give you the best iteration
best_iteration = clf.best_ntree_limit
# Will predict only using the boosters untill the best iteration
y_pred = clf.predict(dtest, ntree_limit=best_iteration)

对于您的问题,得出了否定的结论。

如果提前停止,参数将无法很好地拟合训练数据。另一方面,如果过度拟合,则验证集将无法通过。您可以做的(完美的经验法则(是在验证误差最小的参数处停止。这假设训练误差总是随着迭代周期的增加而下降,但验证集的训练误差下降然后上升。 对于项目,这应该足够好。而对于更高级的应用程序,您可能希望搜索交叉验证等验证技术。但想法是相似的。

最新更新