该站点上有几个问题,主要是询问用于参数调整的嵌套交叉验证是如何工作的。很多答案使用了一些我觉得难以理解的行话,但据我所知,我开发的嵌套交叉验证的直观理解如下:
在标准交叉验证中,如果您有 8 次“运行”,您将在 7 次运行中训练分类器并在剩余的运行中进行测试。你这样做 8 次,这样每次运行都是一次“测试集”(因此,8 折交叉验证)
在嵌套交叉验证中,训练集本身要经过 6 次运行训练集和 1 次运行验证集的交叉验证(因此有自己的 7 个“内部折叠”)。您可以通过使用它们训练 6 次运行的训练集并在 1 次运行的验证集上进行测试来测试许多不同的参数组合、核函数、特征选择方法等。你重复,这样每个集合都像正常的交叉验证一样轮流作为验证集。通过此“内部”交叉验证测试所有模型组合后,您可以在所有内部折叠中选择性能最佳的模型,然后使用所选模型训练整个 7 次运行训练集,并使用具有的原始测试集进行测试没有被内循环触及。
刚刚描述了“外环”的一折(以及外环内的“内环”的七折)。现在你再做一遍,每个折叠轮流作为在外循环中等待的“测试”集。
以上是我理解的嵌套交叉验证。我有一个一般性问题和一个具体问题。
- 从广义上讲,我是否误解了任何明显的东西?
- 我刚刚描述的内容可能会为数据的每个“外部折叠”(也就是不同的参数选择、特征选择等)产生不同的模型。这是有效/正确的吗?它/感觉/对我无效。如果无效,那么我是否应该先执行所有内部循环而不执行单个外部循环,找到整体最佳模型,然后使用相同模型运行所有 8 个外部折叠?