使用 k 折 CV 选择原始 (?) 模型

机器算法验证 回归 交叉验证 模型选择
2022-03-06 06:23:40

在使用k-fold CV在回归模型中进行选择时,我通常分别计算每个模型的CV误差,连同它的标准误差SE,并在CV误差最小的模型的1 SE内选择最简单的模型(第1标准错误规则,请参见此处的示例)。然而,最近有人告诉我,这样我高估了可变性,并且在两个模型 A 和 B 之间进行选择的特定情况下,我真的应该以不同的方式进行:

  • 对于每一折ķ长度ñķ,计算两个模型预测之间的逐点差异。然后计算折叠的均方差
    小号Dķ=一世=1ñķ(是的^一种一世-是的^一世)2ñķ
  • 平均的小号Dķ像往常一样跨折叠,并使用此 CV 差异误差(连同其标准误差)作为泛化误差的估计量。

问题:

  1. 你能理解这个吗?我知道使用 CV 误差作为泛化误差的估计背后有理论上的原因(我不知道这些原因是什么,但我知道它们存在!)。我不知道使用这种“差异”CV 错误背后是否有理论上的原因。
  2. 我不知道这是否可以推广到两个以上模型的比较。计算所有模型对的差异似乎有风险(多重比较?):如果你有两个以上的模型,你会怎么做?

编辑:我的公式完全错误,这里描述了正确的指标,而且要复杂得多。好吧,我很高兴在盲目地应用公式之前在这里问过!我感谢@Bay 帮助我理解他的启发性答案。所描述的正确措施是相当实验性的,所以我会坚持我值得信赖的主力,CV 错误!

1个回答

小号Dķ是泛化误差的一个奇怪的度量,因为保持集甚至没有出现。所有这些都将告诉您模型的预测彼此之间的相关程度,但没有任何关于实际预测测试数据点的好坏。

例如,我可以想出一对愚蠢的预测器:

是的^一种(X,θ)=1+X,1θ

是的^(X,θ):=1+X,1θ2

在这种情况下,调整交叉验证会告诉我设置θ尽可能大,因为那会降低小号Dķ,但我怀疑这些模型会是很好的预测器。

我看了一下链接,但我没有看到你的小号Dķ在那里测量。Andrew Gelman 是一位受人尊敬的统计学家,所以我怀疑他会认可上述类似的东西,这显然不能作为泛化误差的估计量。他的论文和链接讨论了 Leave One Out (LOO) 交叉验证,它仍然需要与测试数据点(即从训练中保留)进行比较作为基准。小号Dķ是一个纯粹的“内向”指标,它不会告诉您任何有关预期测试错误的信息(除非这两个模型可能有类似的错误......)。


对 OP 评论的回应

您的评论中提出的公式需要一些上下文:

  1. 这是一种贝叶斯准确度度量,因为elpd预期的对数逐点预测密度- 相当多,但基本上,它是在某些先验预测下在每个数据点评估的后验预测密度的对数的预期值的总和使用交叉验证估计的密度。
  2. 上述度量 (elpd) 是使用留一交叉验证计算的,其中预测密度取自省略的点。
  3. 他们的公式 (19) 所做的是计算两个模型之间预测准确度差异的标准误差(使用 elpd 测量)。这个想法是 elpd 的差异是渐近正态的,因此标准误差具有推理意义(并且可用于测试潜在差异是否为零),或者模型 A 的预测误差小于模型 B。

所以,这个度量有很多移动部分:你需要运行一个 MCMC 采样算法来从后验参数密度中获取点。然后,您需要对其进行集成以获得预测密度。然后,您需要获取其中每一个的预期值(在多次抽签中)。这是一个相当大的过程,但最终它应该给出一个有用的标准错误。

注意:在等式(19)下面的第三个完整段落中,作者指出需要更多的研究来确定这种方法在模型比较方面是否表现良好……所以,它还没有经过很好的测试(高度实验性)。因此,在后续研究证实它可靠地识别出更好的模型(根据elpd)之前,您基本上相信此方法的有用性。