首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机器学习防止过度安装,这是作弊吗?

机器学习防止过度安装,这是作弊吗?
EN

Stack Overflow用户
提问于 2016-05-09 23:51:21
回答 3查看 594关注 0票数 4

在培训期间评估培训/测试结果时,可以说这些值如下:

代码语言:javascript
复制
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.

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-10 00:01:10

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

您应该做的是有一个单独的机制来检测何时学习结束(似乎您的培训是迭代的),这可能是分析模型本身,或使用一些单独的(通常称为验证)数据集的保留部分。

简而言之:除了报告最终值之外,您不能使用测试数据来任何,也不能将任何决策建立在之上。

票数 6
EN

Stack Overflow用户

发布于 2016-05-09 23:59:30

这取决于你在做什么。

如果你用测试的准确性来拟合超参数,那么是的,你在作弊.测试数据是“泄漏”到你的培训数据间接和你是过份的。

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

锁住测试数据,不要碰它,直到你把手拿开调整你的模型(训练)。

尽可能多地使用验证数据,以找到最佳的超参数等。

完成后,解锁Test以报告模型的准确性(并且强调,不要使用此反馈来调整模型)。

如果您对测试数据的准确性不满意,请考虑重新考虑您的模型。如果您对测试数据结果不满意,那么一旦该模型投入生产,您就不会高兴了。

如果您没有足够的数据来创建三个分区,请考虑执行K次交叉验证

票数 3
EN

Stack Overflow用户

发布于 2016-05-10 00:04:07

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37127190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档