交叉验证中条件测试错误与预期测试错误的含义

机器算法验证 交叉验证 定义
2022-03-19 01:22:41

我关于交叉验证的教科书是Hastie 等人的 The Elements of Statistical Learning 。(第 2 版)。在 7.10.1 和 7.12 节中,他们讨论了条件测试错误之间的区别

E(X,Y)[L(Y,f^(X))|τ]
和预期的测试错误
Eτ[E(X,Y)[L(Y,f^(X))|τ]].
这里τ是训练数据集,L是损失函数,f^是训练的模型τ.E是期望。

他们解释说,CV 只能很好地估计预期的测试误差。

我的问题是,我们有什么理由关心条件测试错误?

我能想到的唯一原因是我们想回答“如果上帝让n表上的数据集,但只能让我们带回家 1 个来拟合我们的模型,我们应该选择哪一个?

2个回答

我认为您可能误解了条件测试错误。这可能是因为 Hastie、Friedman 和 Tibshirani (HFT) 的术语不一致,有时将相同的概念称为“测试错误”、“泛化错误”、“独立测试集上的预测错误”、“真实条件错误” ,或“实际测试错误”。

不管名称如何,这是您在特定训练集上拟合的模型的平均误差τ当应用于从 (X,Y) 对的分布中提取的示例时会发生。如果每次拟合模型出现错误时您都会亏损(或者如果您谈论回归,则与错误成正比),这是您每次使用分类器时平均亏损的金额。 可以说,对于已适合特定训练集的模型,这是最自然的事情。

一旦明白这一点,真正的问题是为什么要关心预期的测试错误!(HFT 也将此称为“预期预测误差”。)毕竟,它是您通常永远不会使用的各种训练集的平均值。(顺便说一句,HFT 似乎打算在定义预期测试错误时对特定大小的训练集进行平均,但他们从来没有明确说过这一点。)

原因是预期测试错误是学习算法的一个更基本的特征,因为它平均了你是否幸运地使用了特定的训练集。

正如您所提到的,HFT 显示 CV 估计预期测试误差比估计条件测试误差更好。如果您正在比较机器学习算法,这是幸运的,但如果您想知道您适合特定训练集的特定模型的效果如何,那就不幸了。

我正在考虑相同的段落,也想知道我什么时候会对条件测试错误感兴趣。更重要的是,据我所知,它们应该渐进地相同:对于非常大的训练和测试集,精确的训练/测试集拆分不应再导致不同的条件测试错误估计。正如您在 Hastie 等人中看到的那样。预订他们关于条件的示例 - 预期差异总是基于相对较少的观察结果,如果我正确理解这一点,这就是为什么条件和预期测试错误在图表中看起来不同的原因。

书中提到,预期的测试误差是训练集中随机性的平均值,而(条件)测试误差没有。现在我什么时候要考虑与我所考虑的特定训练/测试集分区相关的不确定性?我的回答是,我通常对适应这种不确定性不感兴趣,因为这不是我在进行模型评估时感兴趣的:在评估模型的预测质量时,我想知道它是如何比方说预测明天的天气。明天的天气与我的整体数据几乎相关,因为我的测试数据与我的训练数据相关 - 所以我计算一个条件测试错误来评估我的模型。然而,明天的天气与我的整体数据有关,不像一个特定的测试集与相应的特定训练集相关,而是平均测试集如何与平均训练集相关。所以我获得了下一个训练/测试集分区并得到另一个条件测试错误。我这样做了很多次(例如在 K 折交叉验证中) - 各个条件测试错误的变化平均了 - 我留下了预期的测试错误;这也是我能想到的所有想要获得的东西。在 K 折交叉验证中) - 各个条件测试误差的变化平均了 - 我留下了预期的测试误差;这也是我能想到的所有想要获得的东西。在 K 折交叉验证中) - 各个条件测试误差的变化平均了 - 我留下了预期的测试误差;这也是我能想到的所有想要获得的东西。

换句话说,在 Hastie 等人的测试错误/预期测试错误图中,我们了解了模型估计器的效率:如果条件测试错误广泛分散在预期测试错误周围,这表明估计器效率低下,而条件测试误差的较小变化将表明在给定观察量的情况下更有效的估计量。

底线:我可能在这里弄错了,我很乐意对此进行纠正,但正如我目前所看到的那样,条件测试错误的概念是通过只允许自己进行一次培训来评估外部模型有效性的可疑尝试/测试分区拍摄。对于大样本,这个单次测试应该等同于在许多训练/测试分区的测试上平均的条件测试错误,即预期的测试错误。对于出现差异的小样本,在我看来,实际感兴趣的测量值是预期的,而不是条件测试误差。