防止过度拟合的机器学习就是这种欺骗



在训练期间评估训练/测试结果时,应说明以下值:

Train: 50.5% - Test: 50.2%
Train: 55.5% - Test: 53.2%
Train: 62.5% - Test: 58.2%
Train: 69.5% - Test: 62.2%
Train: 75.5% - Test: 59.2% <--- stop training, overfitting seems to be happening.

当这种情况发生时,你能阻止模特训练吗?还是作弊?I.e当测试精度下降时,停止模型的训练。我知道你应该只在训练期间评估训练集,所以这就是我想知道的原因。

这是作弊。以这种方式训练的模型对其在"现实生活"中的表现没有任何合理的保证

你应该做的是有一个单独的机制来检测学习何时完成(似乎你的训练是迭代的),它可以分析模型本身,也可以使用数据集的一些单独的(通常称为验证)保持部分。

简言之:除了报告最终值之外,您不能使用测试数据来任何事情,也不能基于做出任何决定

这取决于你在做什么。

如果你用测试的准确性来拟合超参数,那么是的,你在作弊。测试数据正在间接地"泄漏"到您的训练数据中,这是过度拟合。

因此,建议有3个数据集:训练、测试和验证数据。

将测试数据锁起来,在调整模型(训练)之前不要触摸它

尽可能多地使用验证数据来找到最佳超参数等

完成后,解锁测试数据以报告模型的准确性(只是为了强调,不要使用此反馈来调整模型)。

如果你对测试数据的准确性不满意,可以考虑重新思考你的模型。如果你对测试数据结果不满意,那么一旦模型投入生产,你就不会满意。

如果您没有足够的数据来创建三个分区,可以考虑进行k折叠交叉验证。

好吧,你可以做到这一点(假设你还有第三组数据,有时称为"验证"集)。这叫做提前停车。我不认为那样做有什么好处;是否提前停止取决于训练集和验证集的最佳参数的相对位置。如果我没记错的话,大约一半的时候你会提前停止,一半的时候不会。

最新更新