在培训期间评估培训/测试结果时,可以说这些值如下:
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.当这种情况发生时,你能阻止模型的训练吗?还是作弊?即当测试精度下降时,停止模型的训练。我知道你应该只在训练期间评估训练集,所以我想知道。
发布于 2016-05-10 00:01:10
这是作弊。以这种方式训练的模型对于“在现实生活中”的表现没有任何合理的保证。
您应该做的是有一个单独的机制来检测何时学习结束(似乎您的培训是迭代的),这可能是分析模型本身,或使用一些单独的(通常称为验证)数据集的保留部分。
简而言之:除了报告最终值之外,您不能使用测试数据来任何,也不能将任何决策建立在之上。
发布于 2016-05-09 23:59:30
这取决于你在做什么。
如果你用测试的准确性来拟合超参数,那么是的,你在作弊.测试数据是“泄漏”到你的培训数据间接和你是过份的。
因此,最好有3个数据集:训练、测试和验证数据。
锁住测试数据,不要碰它,直到你把手拿开调整你的模型(训练)。
尽可能多地使用验证数据,以找到最佳的超参数等。
完成后,解锁Test以报告模型的准确性(并且强调,不要使用此反馈来调整模型)。
如果您对测试数据的准确性不满意,请考虑重新考虑您的模型。如果您对测试数据结果不满意,那么一旦该模型投入生产,您就不会高兴了。
如果您没有足够的数据来创建三个分区,请考虑执行K次交叉验证。
发布于 2016-05-10 00:04:07
那么,您可以这样做(假设您还有第三组数据,有时称为“验证”集)。这叫“早停”。我不认为这样做会有什么好处;是否提前停止取决于培训和验证集的最佳参数的相对位置。如果我没记错的话,大约一半的时间你会提前停止,一半的时间你不会。
https://stackoverflow.com/questions/37127190
复制相似问题