我读过博客文章关于改进机器学习模型、训练/验证/测试分裂的文章。最后是这句话:
我说我们应该在测试机器学习模型的方法上更有创意,而不是60-20-20的分裂。但是有一个陷阱--如果我看到测试的结果,并认为这个模型不够好,我该怎么办?如果我让测试集的信息改变我使用哪种模型的决定,那么它就不再是一种公正的测试了--这就是人们所说的“窥视”或“数据泄漏”。一般来说,我想说的是,我们应该尽量避免这种情况。但是,您在模型上进行的测试越多,您就越有可能看到一些失败的测试,结果就是窥视。现在我们进退两难。
我发现这有点奇怪,因为我的印象是,这正是测试的使用方式,以确定是否使用模型。然而,我确实意识到,也许作者的观点是这样的:
对于给定的数据集,可以使用许多可能的模型,其中一些模型在评估指标方面的表现可能会比其他模型更好,即使在培训期间不向它们提供测试集时也是如此。通过使用大量的模型集合,并选择性能最好的模型,您将增加这种性能是由于偶然而不是真正表示/预测数据的模型的可能性。基本上,类似于科学研究中的网络黑客的想法。
在我看来,在实际中,这可能是学位问题(如果你测试2-5模型,它可能没有测试数百个或更多的问题那么严重),但我在博客文章之外找不到太多关于这个问题的讨论。
我可能在这里很容易遗漏一些东西,但我想问一下,使用测试评估度量来执行模型选择是否会引入一种数据泄漏(向模型泄漏关于测试数据的信息)?在这个问题上有没有更权威的消息来源?
发布于 2022-12-01 14:20:09
这正是为什么超参数优化、特性选择和其他影响最终模型的决策应该在验证集上进行,而不是在最终测试集中进行的原因。
理论上,我们应该只在一个新的测试集上对模型进行一次真正的评估,因此,如果一个模型不可能成为最终的模型,取决于它的性能,那么它应该在另一个验证集上进行评估。为了获得足够多的验证集,可以根据需要(假设数据足够大)对培训数据进行多次分割。
显然,在实践中并非总是完美的,这在某种程度上可以被认为是可以接受的。例如,重复使用基准数据集对于比较模型是非常有用的,这可能是数据泄漏的一个来源:间接地,人们利用基于对最先进模型的评估的知识来设计一个新的竞争模型。
https://datascience.stackexchange.com/questions/116626
复制相似问题