维基百科的含义实际上是您的第一种方法。
1将数据拆分为训练集,验证集和测试集 2使用 训练集以适合模型(找到最佳参数:系数 多项式)。
1将数据拆分为训练集,验证集和测试集
2使用 训练集以适合模型(找到最佳参数:系数 多项式)。
这只意味着您使用训练数据来拟合模型。
3然后,使用验证集查找最佳超参数 (在这种情况下,多项式程度)(维基百科文章说: “接着,拟合模型用于预测响应 第二个数据集中的观察结果称为验证数据集“)
这意味着您使用验证数据集通过先前(在训练集上)训练模型来预测其值,以获得模型在看不见的数据上的表现有多好。
对于要查看的所有超参数组合(在您的情况下,您想要尝试的不同多项式度数),您可以重复步骤2和3,以获得每个超极数组合的分数(例如准确度)。
最后,使用测试集对配备培训的模型进行评分 组。
为什么你需要验证集在这个stackexchange问题中得到了很好的解释 https://datascience.stackexchange.com/questions/18339/why-use-both-validation-set-and-test-set
最后,你可以使用你的三个方法中的任何一个。
做法:
是最快的,因为你只为每个超参数训练一个模型。 你也不需要和其他两个一样多的数据。
是最慢的,因为你训练k倍k分类器加上最后一个训练数据,以便为每个超参数组合验证它。
您还需要大量数据,因为您将数据拆分三次,而第一部分再次以k折叠。
但是在这里你的结果差异最小。它不太可能通过巧合获得良好的分类器和良好的验证结果。在第一种方法中,这种情况更有可能发生。交叉验证也更不可能过度拟合。
在其他两个之间是有利有弊的。在这里你也不太可能过度拟合。
最后,它将取决于你拥有多少数据,如果你进入更复杂的模型,如神经网络,你有多少时间/计算能力,并愿意花费。
维基百科的文章没有错;根据我自己的经验,这是ML新手的常见混淆点。
有两种不同的方法可以解决问题:
因此,标准要点是您始终将一部分数据放在一边 的 测试 强> 组;除了最终评估模型的性能之外没有其他原因(即不是来回和多次评估,因为在这种情况下,您使用测试集作为验证集,这是不好的做法)。
完成后,您可以选择是否将剩余数据的另一部分剪切为单独使用 验证 设置,或者如果你将继续进行交叉验证(在这种情况下,没有单独和 固定 验证集是必需的)。
所以,基本上,你的第一种和第三种方法都是有效的(并且互相排斥,即你应该选择你将使用哪种方法)。第二个,正如你所描述的那样(仅在验证集中的CV?),当然不是(如上所述,当你选择使用CV时,你不会分配一个单独的验证集)。除了简要提及交叉验证之外,维基百科文章实际描述的内容是您的第一种方法。
关于哪种方法“更好”的问题当然不能在这种普遍性水平上得到回答;这两种方法确实有效,并根据具体情况使用。非常宽松地说,我会说在大多数“传统”(即非深度学习)ML设置中,大多数人选择使用交叉验证;但有些情况下这是不切实际的(大多数深度学习设置,再次松散地说),人们会使用单独的验证集。