k倍交叉验证如何适合训练/验证/测试集的背景?


14

我的主要问题是试图了解k倍交叉验证在具有训练/验证/测试集的情况下的适合度(如果完全适合这种情况)。

通常,人们会谈论将数据分为训练,验证和测试集-例如,每幅吴安德(Andrew Ng)课程的比例为60/20/20-验证集用于识别模型训练的最佳参数。

但是,如果希望在数据量相对较小的情况下使用k折交叉验证以希望获得更具代表性的准确性度量,那么在这种60/20/20拆分中,进行k折交叉验证的确切含义是场景?

例如,这是否意味着我们实际上将训练和测试集(数据的80%)组合在一起,并对它们进行k倍交叉验证,以获取我们的准确性指标(通过具有明确的“测试集”有效地丢弃)?如果是这样,我们在生产中使用a)和b)对验证集使用哪种训练模型并确定最佳训练参数?例如,a和b的一个可能答案可能是使用最佳折叠模型。

Answers:


12

交叉验证通常有助于避免需要验证集。

训练/验证/测试数据集的基本思想如下:

  1. 训练:您可以在训练数据上尝试选择不同类型的超参数的模型(例如,具有不同特征选择的线性模型,具有不同层选择的神经网络,具有不同mtry值的随机森林)。

  2. 验证:根据验证集比较步骤1中模型的性能,然后选择获胜者。这有助于避免因过度拟合训练数据集而做出的错误决策。

  3. 测试:您可以在测试数据上试用获胜者模型,以了解它在现实中的表现如何。这消除了步骤2中引入的过拟合问题。在这里,您将不做任何进一步的决定。这只是简单的信息。

现在,在您用交叉验证替换验证步骤的情况下,对数据的攻击几乎相同,但是您只有训练和测试数据集。不需要验证数据集。

  1. 培训:见上文。

  2. 验证:对训练数据进行交叉验证,以选择关于交叉验证性能的第1步最佳模型(此处,原始训练数据被重复拆分为临时训练和验证集)。在交叉验证中计算的模型仅用于选择第1步的最佳模型,它们均在完整的训练集上计算。

  3. 测试:见上文。


1
谢谢!要确认的是,在CV环境中,可能有80%的训练与20%的测试分配。然后,您可以在80%的数据上建立模型,并针对20%的数据进行测试以获取准确性。要尝试不同的模型变体,可以对训练数据集(数据的80%)进行10倍CV-有效地训练8%的总数据,并针对每一折对72%的总数据进行测试。根据CV结果,可以确定最佳超参数值,并使用它们来构建一种基于所有训练数据(完整数据集的80%)进行训练的新模型,并针对其余20%的测试数据集进行测试。正确?
2016年

3
是的,除了在每次简历运行中,您将使用72%的训练和8%的验证;-)
Michael M

很棒的回复@MichaelM。我正在阅读有关嵌套交叉验证(NCV)的文章,但我很难决定是否应该使用它,或者只是按照CV概述进行操作。就我所知,NCV将应用于步骤3。您不会得到1的获胜者分数,而是得到K的获胜者分数(将总运行次数乘以K,步骤1-2用diff 80%的训练数据重复K次),然后可以取平均。那么问题是:1)我的理解正确吗?2)是否建议使用NCV?
阿兹兹Javed

你说的没错。与上面概述的“简单”方法相比,嵌套CV将有助于获得更可靠的估计。如果时间允许,那肯定是一个选择。您知道在嵌套CV中最终模型是基于哪个数据集计算的吗?就饱了吗?
Michael M

3

K与其他许多方法一样,折交叉验证是一种(重新)采样策略。

分为培训/验证/测试也是一种抽样策略。

您可以将训练/验证替换为其他采样策略。然后,您将对80%的数据执行倍CV,然后对其余20%的数据进行测试。K

您也可以将其应用于测试部分(这就是人们所说的嵌套交叉验证),其中折用于训练/验证,其余的用于测试,然后对折进行迭代。K1

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.