交叉验证中的平均值(分数)与分数(连接)

机器算法验证 分类 交叉验证 小样本
2022-01-25 12:56:11

TLDR:

我的数据集非常小(120)个样本。在进行 10 倍交叉验证时,我应该:

  1. 收集每个测试折叠的输出,将它们连接成一个向量,然后在这个完整的预测向量(120 个样本)上计算误差?

  2. 或者我应该计算每次折叠得到的输出的误差(每折叠 12 个样本),然后将我的最终误差估计值作为 10 倍误差估计值的平均值?

是否有任何科学论文争论这些技术之间的差异?


背景:多标签分类中与宏观/微观分数的潜在关系:

我认为这个问题可能与多标签分类任务(例如 5 个标签)中经常使用的微观宏观平均值之间的差异有关。

在多标签设置中,通过为 120 个样本上的所有 5 个分类器预测制作真阳性、假阳性、真阴性、假阴性的聚合列联表来计算微平均分数。然后使用该列联表来计算微精度、微召回率和微 f 度量。因此,当我们有 120 个样本和 5 个分类器时,会根据 600 个预测(120 个样本 * 5 个标签)计算微观度量。

使用宏变体时,会在每个标签上独立计算度量(精度、召回率等),最后,对这些度量进行平均。

微观宏观估计之间差异背后的想法可以扩展到二进制分类问题中的 K 倍设置中可以完成的事情。对于 10 倍,我们可以平均超过 10 个值(宏观测量)或连接 10 个实验并计算微观测量。

背景 - 扩展示例:

下面的例子说明了这个问题。假设我们有 12 个测试样本,我们有 10 个折叠:

  • 折叠 1TP = 4,FP = 0,TN = 8精度= 1.0
  • 折叠 2TP = 4,FP = 0,TN = 8精度= 1.0
  • 折叠 3TP = 4,FP = 0,TN = 8精度= 1.0
  • 折叠 4TP = 0,FP = 12, 精度= 0
  • 折叠 5 ..折叠 10 : 都具有相同的TP = 0, FP = 12 和Precision = 0

我使用了以下符号:

TP = 真阳性数, FP = # 假阳性, TN = 真阴性数

结果是:

  • 10 次折叠的平均精度 = 3/10 = 0.3
  • 10 折预测的串联精度 = TP/TP+FP = 12/12+84 = 0.125

请注意,值 0.3 和 0.125 非常不同

2个回答

所描述的差异是恕我直言假的。

只有当真正正面案例的分布(即参考方法说它是正面案例)在折叠(如示例中)相关测试案例的数量(性能度量的分母)上非常不相等时,您才会观察到它我们正在谈论,这里真正的积极)在平均折叠平均值时没有考虑在内。

如果你加权前三倍的平均值412=13(因为总共 12 个用例中有 4 个测试用例与精度计算相关),最后 6 倍平均值为 1(所有与精度计算相关的测试用例),加权平均值与您的完全相同将 10 折的预测汇集起来,然后计算精度。


编辑:原始问题还询问了有关迭代/重复验证的问题:

的,你应该运行整个迭代k-折叠交叉验证程序:
从中,您可以了解模型预测的稳定性

  • 如果训练数据因交换几个训练样本而受到干扰,预测会有多大变化?
  • 即,对于同一个测试样本,不同“代理”模型的预测有多大差异?

你要的是科学论文

低估方差 最终,您的数据集的样本量是有限的(n = 120),无论您进行了多少次引导或交叉验证迭代。

  • 在重采样(交叉验证和自举)验证结果中,您(至少)有 2 个方差来源:

    • 由于有限数量的(测试)样本引起的方差
    • 由于代理模型预测的不稳定性导致的方差
  • 如果你的模型是稳定的,那么

    • 的迭代k不需要-fold 交叉验证(它们不会提高性能估计:每次运行交叉验证的平均值是相同的)。
    • 然而,由于测试样本的数量有限,性能估计仍然会受到方差的影响。
    • 如果您的数据结构是“简单的”(即每个统计独立案例的单个测量向量),您可以假设测试结果是伯努利过程(抛硬币)的结果并计算有限测试集方差。
  • out-of-bootstrap 查看每个代理模型预测之间的差异。交叉验证结果也是可能的,但这种情况并不常见。如果这样做,除了不稳定性之外,您还会看到由于样本量有限而导致的方差。但是,请记住(通常)已经发生了一些池化:通常用于交叉验证nk结果被合并,并且对于自举,不同数量的遗漏样本被合并。
    这让我个人更喜欢交叉验证(目前),因为它更容易将不稳定性与有限的测试样本大小区分开来。

你应该做得分(连接)。该领域普遍存在一种误解,即平均(分数)是最好的方法。它可能会在您的估计中引入更多偏差,尤其是在稀有类别上,就像您的情况一样。这是支持这一点的论文:

http://www.kdd.org/exploration_files/v12-1-p49-forman-sigkdd.pdf

在论文中,他们使用“Favg”代替您的“mean(scores)”和“Ftp,fp”代替您的“score(concatenation)”

玩具示例:

想象一下,你有 10 次交叉验证和一个出现 10 次的类,并且恰好被分配,因此它在每个折叠中出现一次。此外,该类总是被正确预测,但数据中有一个假阳性。包含假阳性的测试折叠将有 50% 的准确率,而所有其他折叠将有 100%。所以平均(分数)= 95%。另一方面,score(concatenation) 为 10/11,约为 91%。

如果我们假设数据很好地代表了真实的总体,并且 10 个交叉验证分类器很好地代表了最终的分类器,那么真实世界的准确率将是 91%,而 95% 的平均(分数)估计值是有偏差的.

在实践中,您不会想要做出这些假设。相反,您可以使用分布统计来估计置信度,方法是随机排列数据并多次重新计算分数(连接),以及引导。