首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用测试数据集来选择模型?

是否可以使用测试数据集来选择模型?
EN

Data Science用户
提问于 2018-12-27 14:47:23
回答 3查看 2.8K关注 0票数 2

我试图了解测试数据集是否可以用来选择一个经过训练的最终模型。让我们假设这个场景:

我首先分割了整个数据集: 70%的训练,30%的测试。然后我拟合了几个模型(假设NN,RandomForest,AdaBoost,.)在训练数据集上进行交叉验证,对超参数进行调优,以获得最佳的列车数据性能。我知道这些分数是有偏见的,因为我调整了这些数据上的超参数。

然后,使用测试数据集来获得对无偏数据的真实性能,并选择哪个模型的性能最好。

这是使用测试数据集的正确方式吗?一些混淆来自于测试数据集的internet定义:

用于对最终模型进行无偏评估的数据样本,适合于培训数据集。

似乎它应该只用于获得一个最后训练的模型的性能。我的老师告诉我,我不能根据测试数据集的分数来选择一个经过训练的模型,并引用了上面的定义。我很难相信她是对的。那么,应该使用哪个数据集来选择模型?

EN

回答 3

Data Science用户

回答已采纳

发布于 2019-01-01 18:52:45

谢谢你的回答。我和更多的人商量了一下,我想我已经接受了一个对我来说有意义的解释:

事实是,虽然可以像我一样使用“测试数据集”来选择模型,但它并不是真正意义上的“测试数据集”。因为我使用dataset来选择模型,所以分数不再是无偏的,因此它不再代表真实的准确性,而是多个模型之间的无偏相对分数。因此,我不应该称它为“测试数据集”,因为它不能显示真正的最终准确性。它可能被称为“验证2数据集”。

TLDR:“测试数据集”用于选择模型,但我不应该称之为“测试数据集”,因为它显示的是相对分数,而不是真正的最终模型准确性。

票数 2
EN

Data Science用户

发布于 2018-12-27 15:53:06

你的老师是对的。测试数据集是不可见的数据。无法使用测试集选择最终模型。在竞争中,公平地说,测试数据集在提交最终的经过训练的模型之前是不会显示的。

要选择最终模型的超参数(例如激活函数、隐藏层数、单元数、学习率、辍学,.),您应该使用验证集。

票数 2
EN

Data Science用户

发布于 2018-12-27 15:11:18

你的过程没问题。通过使用k折叠交叉验证,您还(反复)将培训集进一步划分为培训集和交叉验证集。该测试集可以用来估计实际的泛化误差。

正如我所理解的,您没有使用测试数据集来选择模型。

如果您没有使用k折叠交叉验证,并且使用“测试”集来选择模型,那么它仍然是正确的,但是“测试”集将是您的交叉验证集。你不能做的是估计真正的泛化误差。

顺便说一句,70-30似乎是一种激进的分裂;“这取决于”,但在这种情况下,90-10留下了大量的测试数据。

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

https://datascience.stackexchange.com/questions/43210

复制
相关文章

相似问题

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