选项 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% 验证集特别容易预测。如果没有对错误进行多次测量,假设您的预测模型的预期错误率对于未来的数据将保持不变是非常冒险的。
哪个是“更大的风险”?假设未来数据的错误将基本保持不变,或者假设添加更多数据来学习你的模型会以某种方式“搞砸”模型并在未来增加其错误率?我真的不知道如何回答这个问题,但我会怀疑随着更多数据而变得更糟的模型......