当使用单独的建模/验证集构建回归模型时,“重新分发”验证数据是否合适?


13

假设我在建模/验证观察之间划分为80/20。我已经将模型拟合到建模数据集,并且对在验证数据集上看到的错误感到满意。在推出模型以对未来观察进行评分之前,是否将验证与建模数据结合起来以获取100%数据的更新参数估计值是否合适?我听说过两种观点:

  1. 我执行的验证是对模型结构的验证,即我已应用的一组预测变量和转换。当我可以使用它来更新估算值时,将20%的数据留在表上是没有意义的。

  2. 我执行的验证部分是对我在建模数据集上计算出的参数估计值的验证。如果我更新模型拟合度,那么我已经更改了估计值,并且不再具有测试更新模型性能的客观方法。

我一直遵循#1的论点,但最近我听到几个人争论#2。我想看看其他人对此有何看法。您是否在文献中或其他地方看到过有关该主题的精彩讨论?

Answers:


6

选项1是正确的。您可以添加验证数据集以更新模型的参数。

那就是答案。现在让我们讨论一下。如果您对引导程序进行了k倍交叉验证,那么您所做的就是上面的选择1的事实就更清楚了(您应该这样做-从您的问题中还不清楚)。

在5倍交叉验证中,您将拥有的数据分为5个大小相等的随机集合。让我们称它们为A,B,C,D和E。然后您在4个集合(例如A,B,C和D)中学习(模型本身的)模型参数,并对其进行测试或验证第五个模型E。(您做到了)但是,然后您选择另一组作为测试/验证(例如D)并学习使用其他4组(A,B,C和E)。在D上测试,重复一次。

您的预测模型的误差是5个测试的平均误差-您对预测误差如何取决于学习和测试集有一定的了解。在最佳情况下,所有5种错误度量都是相似的,您可以合理地确定模型将来会在该级别执行。

但是什么型号?对于每组学习集,您将拥有一个不同的模型参数。用A,B,C,D学习会生成参数集P1,使用A,B,C,E学习会生成参数集P2,直到P5。他们都不是您的模型。

您测试的是构建模型的过程的预期错误,即学习集为A,B,C,D以及为A,B,C,E时遵循的过程,依此类推。该过程是否生成具有该预期误差的模型?

那么最终的模型是什么?它是该过程在所有可用数据(A,B,C,D和E)中的应用。以前从未生成过带有参数集P0的新模型,您没有任何数据可以对其进行测试(因为您已经“使用”了所有数据来确定参数P0),但是您有合理的期望它会在将来执行数据与使用相同步骤构造的其他模型(P1,P2 ...)相同。

如果您没有执行交叉验证或引导程序(引导程序的解释有些复杂-在本次讨论中我将其省略),该怎么办?如果您仅执行了一次学习/验证拆分和一项错误度量,该怎么办。然后,参数2可能在某种程度上是正确的,但是您有一个更大的问题-您只有一种度量模型误差的方法,并且您不知道该误差与用来验证模型的数据之间的依赖程度。幸运的是,也许20%的验证集非常容易预测。如果没有进行多种错误度量,那么假设您的预测模型的预期错误率对于将来的数据保持相同将非常冒险。

哪个是“更大的风险”?假设错误对于将来的数据将基本保持不变,还是假设添加更多数据以学习模型将在某种程度上“扭曲”模型并在将来增加其错误率?我真的不知道如何回答这个问题,但是我会怀疑随着数据的增加而恶化的模型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.