【问题标题】:Nested cross validation: how does the outer loop work?嵌套交叉验证:外循环如何工作?
【发布时间】: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 的平均值吗?如果是这样,那代表什么?

我希望这个问题是有道理的。如果需要,我可以尝试详细说明。

【问题讨论】:

    标签: cross-validation k-fold


    【解决方案1】:

    是的,嵌套 CV 的想法是最终得到多个模型,这样您就可以评估广义性能和模型方差,而不是最终得到一个具有广义误差的模型。
    内循环中的每个拆分都用于训练和验证以确定在外循环上每个拆分中使用的最佳超参数,然后您可以训练模型并使用这些超参数集对其进行测试。
    在您的示例中,您最终将得到具有三种不同性能和三种不同误差估计的三个模型,然后您可以将所有这些都包含在您的分析中并进行更好的概括。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2017-06-12
      • 2019-09-20
      • 2016-09-30
      • 1970-01-01
      相关资源
      最近更新 更多