为什么不对整个训练集进行验证?

机器算法验证 机器学习 交叉验证 参考
2022-03-18 09:00:18

我们有一个包含 10,000 个手动标记实例的数据集,以及一个针对所有这些数据进行训练的分类器。然后对所有这些数据评估分类器以获得 95% 的成功率。

这种方法到底有什么问题?只是在这个设置中 95% 的统计信息不是很丰富吗?这个 95% 的数字还有价值吗?虽然我知道从理论上讲这不是一个好主意,但我在这方面没有足够的经验来自己确定。另请注意,我既没有构建也没有评估有问题的分类器。

抛开常识不谈,有人能给我一个非常可靠、权威的参考,说这个设置有什么问题吗?

我在互联网上找到的只是用来传达一些直觉的玩具示例。在这里,我有一个由具有既定记录的专业人士完成的项目,所以我不能只说“这是错误的”,尤其是因为我不确定。

例如,此页面确实说:

使用用于训练的数据评估模型性能在数据挖掘中是不可接受的,因为它很容易生成过度乐观和过度拟合的模型。

但是,这几乎不是权威的参考。事实上,这句话显然是错误的,因为评估与生成过拟合模型无关。它可能会产生过度乐观的数据科学家,他们会选择错误的模型,但特定的评估策略与过度拟合模型本身没有任何关系。

4个回答

理由很简单:当你建立一个模型时,你希望这个模型对新的、未见过的数据有效,对吧?否则你不需要模型。

然后,您的评估指标,比如说精度和召回率,必须让您了解您的模型在看不见的数据上的表现如何。

现在,如果您对用于训练的相同数据进行评估,您的准确率和召回率将有偏差(几乎可以肯定,高于应有的数据),因为您的模型已经看到了数据。

假设您是一位老师,正在为一些学生编写考试。如果你想评估他们的技能,你会给他们一些他们已经看过的练习,并且他们仍然在他们的桌子上,或者新的练习,受他们所学的启发,但与他们不同?

这就是为什么您总是需要保留一个完全看不见的测试集进行评估。(您也可以使用cross-validation,但这是另一回事)。

@jpl 对这里的想法提供了很好的解释。如果你想要的只是一个参考,我会使用一本坚实的基础教科书。一些广受好评的涵盖交叉验证概念及其重要性的书籍可能是:

如果您在整个训练集上进行验证,那么您理想的模型就是只记住数据的模型。没有什么能打败它。

你说“实际上这不是一个只记住数据的模型”。但为什么你更喜欢其他型号?这就是我简化验证所有数据的荒谬性的要点:您不喜欢记住它所看到的一切的模型的主要原因是它根本没有概括。给定一个它没有看到的输入,它应该怎么做?因此,您需要一个通用的模型,而不是只适用于它所看到的模型。您对在看不见的数据上良好工作的愿望进行编码的方式是将验证数据设置为完全是看不见的数据。

但是,如果您知道您的训练示例完全代表真实分布,那么请继续使用它们进行验证!

此外,与您最后一段中的主张相反,您引用的引文并非“完全错误”,并且“特定评估策略”确实与“过度拟合模型”有关。过拟合意味着拟合(噪声)提供的训练样本,而不是一般数据的统计关系。通过使用可见数据进行验证,您将更喜欢适合噪声的模型,而不是那些使用不可见数据运行良好的模型。

这是我的简单解释。

当我们对现实进行建模时,我们希望我们的模型不仅能够解释现有事实,还能够预测新事实。所以,样本外测试就是为了模仿这个目标。我们在一些数据(训练集)上估计(训练)模型,然后尝试在训练集之外进行预测,并将预测与保留样本进行比较。

显然,这只是一个预测练习,而不是真正的预测,因为实际上已经观察到了保留样本。只有当您在数据上使用模型时,预测中的真正测试才会发生,这是尚未观察到的。例如,您为广告开发了机器学习程序。只有当你开始在实践中使用它,并观察它的性能时,你才能确定它是否有效。

然而,尽管训练/坚持方法的局限性,它仍然是信息丰富的。如果您的模型仅在样本中工作,那么它可能根本不是一个好的模型。因此,这种测试有助于淘汰不良模型。

要记住的另一件事:假设您对模型进行了训练/保留样本验证。但是,当您想使用模型时,您可能会在整个数据集上估计模型。在这种情况下,在训练样本上估计的模型的样本外验证结果的适用性如何?