重复 k 折交叉验证的报告方差

机器算法验证 交叉验证
2022-02-14 04:10:55

我一直在使用重复的 k 折交叉验证并报告平均值(评估指标的,例如灵敏度、特异性),计算为交叉验证的不同运行的折叠的总平均值。

但是,我不确定我应该如何报告差异。我在这里发现了许多讨论重复交叉验证的问题,但是,我所知道的没有一个明确回答重复交叉验证测试中的方差问题。

我知道总方差是由于:1)模型不稳定和 2)样本量有限。

似乎有 4 种不同的方法可以计算重复 k 折交叉验证的方差:

1)在交叉验证的运行中估计的平均性能指标(例如,准确性)的方差是对方差的有效估计吗?

2)通过合并运行特定的方差(跨交叉验证测试运行的不同折叠计算)来合并方差。

3)连接来自在一个大向量中运行的交叉验证的不同折叠的分类结果。例如,如果每个折叠中的测试数据数量为 10,并且我有一个 10 折叠的 CV,则重复生成的向量大小为 100。现在,如果我重复交叉验证测试 10 次,我将有 10 个大小为 100 的向量,每个向量都包含 10 倍 CV 运行的分类结果。现在,我将计算平均值和方差作为单次运行 CV 的情况。

4)我还读到(方程式 2 和 3 中的1)方差是外部方差和预期内部方差的总和。如果我理解正确,外部方差是特定于重复的平均表现的方差,内部方差是交叉验证运行的不同折叠之间的方差。

我将非常感谢您的帮助和指导,说明哪些方差适合报告重复交叉验证测试。

谢谢,

2个回答

1 和 3 在我看来是无效的,因为它们没有考虑重复运行之间的依赖关系。换句话说,重复的 k-fold 运行比具有独立数据的实验的真实重复更相似。

2 不考虑同一运行中折叠之间的依赖关系。

我不知道4。

Bengio & Grandvalet, 2004, “No Unbiased Estimator of the Variance of K-Fold Cross-Validation”是一个可能相关(但令人沮丧)的参考文献

我可能是错的(我愿意改变主意!)但据我了解,当我们说 CV 减少方差时,我们实际上无法通过查看折叠之间的方差来看到它。

问题是,CV 只是一种改进对(一个!)模型的性能估计的技术(因为在 k-folds 中我们训练相同的模型,只是使用不同的数据)。因此,一轮 CV 只给我们一个值(折叠的平均值),我们不能说任何关于方差的事情。

据我了解,如果我们做更多的实验,我们可以引入方差。例如,让我们考虑重复 10 个实验:在每个实验中,我们运行一个 k-fold-CV,最终得到准确度的最终估计。这最终为我们提供了 10 个不同的准确度值。现在我们可以计算这 10 个值的方差,称之为就个人而言,我会报告这个值。请注意,我们可以对没有 CV 的初始场景执行相同的操作。只需计算 10 次实验的最终指标,您只需进行 70-30 或 60-40 的拆分!σk2

现在我们可以对其他 k 值做同样的事情,我们可以看到相对于没有 CV 的最简单情况,对于 k=5 或 k=10,σ2