【发布时间】:2022-12-04 00:22:45
【问题描述】:
(这是来自 cv stack exchange 的复制帖子,但也只是放在这里)
我打算实施嵌套交叉验证,但只是对其操作有疑问。我知道有很多关于嵌套简历的帖子,但没有一篇(据我所知)解决我对该过程的误解。
语境: 我找到了插图 (如下所示) 在以下博客中是对正在发生的事情的最简单解释:here。
问题:如果每个内循环 cv 过程产生一组不同的最优超参数,外循环如何工作?
为了解释我的意思,我将参考上面的图像,它在外环中有 3 个折叠,我将分别称为折叠 1、2 和 3。
对于外循环的第一次迭代,我们使用 Fold 1 作为保持测试集,并传入 Folds 2 和 3 以在内循环中进行 (Kfold cv) 超参数调整。假设这会产生一组特定的最佳超参数:超参数集 A.然后我们使用超参数集 A 训练一个模型,将所有折叠 2 和 3 作为训练数据,并在折叠 1 上进行测试 - 我们得到准确度A.
现在对于外循环的下一次迭代,使用 Fold 2 作为测试保持集并将 Folds 1 和 3 传递给内循环 cv 过程。让我们说这会产生一个不同的最佳超参数集:超参数集 B.然后我们使用超参数集 B 训练一个模型,将所有折叠 1 和 3 作为训练数据,并在折叠 2 上进行测试——我们得到准确度 B.
为了完整起见,我们可以在外循环的第三次迭代中重复上述步骤,并获得一些新的最优超参数集:超参数集 C.然后我们使用超参数集 C 训练一个模型,将所有折叠 1 和 2 作为训练数据,并在折叠 3 上进行测试——我们得到准确度 C.
这就是我感到困惑的地方:
- 我们现在拥有三个不同的模型/超参数集。外循环如何帮助我们评估一般设置中的性能?
- 我可以简单地取准确度 A、B 和 C 的平均值吗?如果是这样,那代表什么?
我希望这个问题是有道理的。如果需要,我可以尝试详细说明。
【问题讨论】: