【问题标题】:R: k-fold cross-validation for train data setR:训练数据集的 k 折交叉验证
【发布时间】:2018-05-03 16:43:41
【问题描述】:
我正在使用 R 中的 C5.0 对心脏病数据集进行一些分类任务,在最常见的情况下,数据将分为 80% 用于训练,20% 用于测试,
我想使用k-fold交叉验证(k=10),但是我对这一点感到困惑,因为我们知道通过使用10-fold交叉验证,我们会将整个数据分成9个子集训练和测试的一个子集。
是否可以将数据分成 80% 用于训练和 20% 用于测试,然后对训练数据应用 k 折交叉验证?
还是我必须对整个数据集应用 k 折交叉验证?
【问题讨论】:
标签:
r
machine-learning
classification
【解决方案1】:
一个选项是 k=5。在这种情况下,您使用 80% 进行训练并使用 20% 进行测试。但为此,您不需要使用 k 折交叉验证。
k-fold 交叉验证总是在整个数据集上进行。因此,在 k=5 的情况下,有 5 种可能的场景需要进行测试和比较。
【解决方案2】:
对整个数据集应用 k 折交叉验证是更好的选择。在这种方法中,数据将被分成 k 折,其中 k-1 折用于训练,剩下的 1 折用于测试。这样,一旦交叉验证结束,您将获得完整数据的性能。
但需要注意的一点是,对于大多数分类问题,参数调整是重要的一步。因此,为此您可能会考虑 50% 的数据来找到分类器的最佳参数。此处也使用交叉验证方法。