K-Fold Cross 验证混乱?

数据挖掘 分类 交叉验证 matlab 采样
2022-02-11 12:40:00

我正在使用 K-Fold 交叉验证来测试我训练过的模型,但惊讶于每个 K-fold 的准确度都不同。例如,如果我使用 5 K-fold,则每个折叠都有不同的精度。那么,我应该使用哪个折叠?平均所有 5 次折叠是最佳选择吗?其次,为什么5折交叉验证和10折交叉验证的数据集拆分率(70/30)不同?不应该一样吗?

1个回答

准确率是不同的,因为每个k-folds的数量都有k-classifiers,并且找到了一个新的准确率。

您不会自己选择折叠。K-Fold 交叉验证用于根据您设置模型拟合函数的参数和超参数的方式来测试模型的总体准确性。

您选择的是折叠数,因此在您的 5 折叠示例中,它将执行以下操作:

  1. 将您的训练集分成 5 个不同的子集(折叠)
  2. 通过使用 k-1 折叠来拟合模型,为 5 折叠中的每一个创建一个分类器,并使用遗漏的折叠测试分类器的准确性

完成后,您可以看到分类器的表现如何超过这些折叠的平均值。

如果您试图找到最佳参数来配置模型以获得最佳精度,您应该使用网格搜索。根据您的语言,实现会有所不同:python using sklearn.model_selection.GridSearchCV

, R 使用 'carat' 库和 train() 函数。运行网格搜索后,如果您使用 R 或 python 编程,则可以使用生成的模型,您可以将新的超参数添加到模型拟合函数并重新拟合模型。

您的训练/测试比率将取决于折叠次数。如果您的训练集中有 100 行并且有 5 折,那么您将有 80/20 拆分训练/测试。如果你有 10 折,那将是 90/10 的拆分。k-folds 的交叉验证函数使用 k-1 折来拟合模型,而遗漏的折用于测试。