模型比较的交叉验证:使用相同的折叠?

数据挖掘 交叉验证
2021-10-07 21:32:56

假设我们有要比较的模型 M1 和模型 M2。当我们进行 5 折(比如)交叉验证时,正确的方法是将数据划分为 F1、F2、F3、F4 和 F5,然后通过这些折运行两个模型吗?那么评估 M2 是否优于 M1 的方法是进行配对 t 检验吗?

我主要考虑这样一种情况,即我有其他人做过的交叉验证的结果,并想看看我的模型是否能超过他们平均 80% 的准确率。在那种情况下,我不会有他们确切的折叠,甚至可能没有他们使用了多少折叠,所以配对 t 检验是不可能的。当我不确切知道他们如何将观察结果分配到折叠中时,与他们的指标或 5 折叠上的 5 个指标进行比较会有什么陷阱?

1个回答

这里似乎有一些混乱的因素。我会尽量回答清楚,但肯定会感谢其他人的意见。

1. 什么是交叉验证?

交叉验证通常用作一种机制,用于在选择要应用于测试集的模型之前,确定几个模型中的哪一个可能更适合基于训练集的数据。这通常在调整超参数(例如正则化回归中的惩罚因子)时完成,在其他场景中也是如此。

在这种情况下,您可能希望使用相同的折叠来交叉验证每个模型,因为您想要识别归因于模型本身的性能差异,而不是由于将观察随机划分为不同折叠的影响。重要的是,交叉验证是模型训练过程的一部分,而不是最终模型评估。

交叉验证不是为了找到总体上“最佳”性能的模型。模型性能基于对一组保留的测试观察结果的应用。这个想法是,由于训练数据集之间的特质在整体观察中不存在,模型性能通常会在训练数据中人为地高,并且对测试数据的应用表明该模型如何推广到全新的观察。即使在研究中讨论了交叉验证结果,它们也不是比较独立准备并根据不同数据训练的模型的合适值。

2. 在交叉验证期间,如何评估哪个假定模型“更好”?

这个问题可能有点争议,即准确度(例如分类)不是在交叉验证期间识别最佳模型的非常强大的方法。根据您的建模内容,它将以不同程度的质量工作。但更好的衡量标准是各种损失函数,可能是均方误差、二项式偏差或许多其他(取决于情况)。

你如何比较这些损失函数的输出通常是相当简单的——你想要最小的错误、最小的偏差等。执行配对 t 检验并不合适。这样的测试将告诉您在特定零假设和备择假设集的上下文中,您的变量在时间上连接的数据点的分布情况(例如在应用处理之前和之后的某些变量的测量)。这种配对关系不适用于一次一个且以相互排斥的方式受到不同模型的观察。

3. 应该怎么做?

如上所述,模型性能是根据新数据而不是训练数据评估的。在模型开发中,这将是测试集,但也可以将模型应用于全新的数据。如果要比较的模型在复杂性上相似,则适当的损失函数仍然是理想的。但在许多情况下,分类准确性是必要的(如果这是你老板要求的,那可能就是你必须提供的)。

在这种情况下,更简单的正确分类计数(15 个中有 9 个被正确分类)是合适的。更好的是模型敏感性和特异性(模型分别识别真阳性和真阴性的能力,如在二项式分类中)和阳性/阴性预测值(模型建议的任何给定分类的可靠性)的测量非常有效.


tl; dr:交叉验证是将已经训练的模型与正在训练的不同模型进行比较的错误阶段,并且 t 检验在比较交叉验证时没有提供信息。损失函数或分类准确度更合适(在不同情况下不同程度地),并且应该基于训练中未使用的数据。