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

Suboptimal Early Stopping prevents overfitting in Machine Learning?

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

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

请假设已采取一切措施正确拆分训练、测试、验证等数据集

谢谢。

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

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

  • 它查看你的 "watchlist" 的最后一个元组(通常你把 validation/testing 集合)放在那里
  • 它根据你的评价指标评价这个集合
  • 如果此评估 x 次(其中 x = early_stopping_rounds)没有更改
  • 模型停止训练,并知道最好的迭代在哪里(对你的 test/validation 集进行最好的评估)

是的,您的模型将使用 x 不必要的迭代(助推器)构建。但假设你在 clf

中训练有素 xgboost.Booster
# 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)

你的问题