R:训练数据集的 k 折交叉验证

Posted

技术标签:

【中文标题】R:训练数据集的 k 折交叉验证【英文标题】:R: k-fold cross-validation for train data set 【发布时间】:2018-05-03 16:43:41 【问题描述】:

我正在使用 R 中的 C5.0 对心脏病数据集进行一些分类任务,在最常见的情况下,数据将分为 80% 用于训练,20% 用于测试, 我想使用k-fold交叉验证(k=10),但是我对这一点感到困惑,因为我们知道通过使用10-fold交叉验证,我们会将整个数据分成9个子集训练和测试的一个子集。

是否可以将数据分成 80% 用于训练和 20% 用于测试,然后对训练数据应用 k 折交叉验证? 还是我必须对整个数据集应用 k 折交叉验证?

【问题讨论】:

【参考方案1】:

一个选项是 k=5。在这种情况下,您使用 80% 进行训练并使用 20% 进行测试。但为此,您不需要使用 k 折交叉验证。

k-fold 交叉验证总是在整个数据集上进行。因此,在 k=5 的情况下,有 5 种可能的场景需要进行测试和比较。

【讨论】:

你可以在analyticsvidhya.com/blog/2015/11/…找到一个例子【参考方案2】:

对整个数据集应用 k 折交叉验证是更好的选择。在这种方法中,数据将被分成 k 折,其中 k-1 折用于训练,剩下的 1 折用于测试。这样,一旦交叉验证结束,您将获得完整数据的性能。

但需要注意的一点是,对于大多数分类问题,参数调整是重要的一步。因此,为此您可能会考虑 50% 的数据来找到分类器的最佳参数。此处也使用交叉验证方法。

【讨论】:

以上是关于R:训练数据集的 k 折交叉验证的主要内容,如果未能解决你的问题,请参考以下文章

R语言里怎么做十折交叉验证

如何计算分层 K 折交叉验证的不平衡数据集的误报率?

在使用 k 折交叉验证训练训练数据后如何测试数据?

K折交叉验证

数据集的划分

交叉验证iris数据集