K 折交叉验证:MSE 平均值和方差如何随 K 变化?

数据挖掘 交叉验证
2022-02-16 22:51:45

我想了解变化的k如何影响 k-fold 验证。以下是对的吗?

OOS MSE 的平均值通常应该随着 k而减小, 因为“k”越大意味着训练集越大,所以我们有更多的数据来拟合模型(假设我们使用的是“正确的”模型)。

OOS MSE 的方差通常应随着 k的增加而增加。 更大的“k”意味着拥有更多的验证集。所以我们有更多的个体 MSE 来平均化。由于许多小折叠的 MSE 将比几个大折叠的 MSE 更稀疏,因此方差会更高。

在此处输入图像描述

1个回答

OOS MSE 的平均值通常应随着k 的增加而减小。这是正确的,但差异远小于图表上的差异。假设我们有一个数据集,如果我们将数据增加 10 倍,误差将减半(对于论文Scaling to Very Very Large Corpora for Natural Language Disambiguation近似正确)。那么 5 倍和 20 倍验证之间的差异将是大约 5% (1/(2^log10(0.95/0.8)),而不是像你的图表上那样减半。而20倍和无限倍的差距只有1.5%左右(1/(2^log10(1/0.95))

对于图表,您可以使用公式:Average OOS MSE = 1/(2^log10(1-1/k))*MSE_inf这将假设您的 MSE = MSE_inf 在无穷大。

OOS MSE 的方差通常应随着k 的增加而增加。MSE 是一个平均值,根据中心极限定理(如果平方误差 (SE) 是独立且同分布的,在我看来,这对于大多数机器学习算法来说都是假设的)方差应该等于 Var(SE)/N,其中 N 是用于计算 MSE 的数据点数。因此,对于 5 倍,您将有方差 Var(SE)/(Npop/​​5) 其中 Npop 是您拥有的总点数。对于所有 k 折之间的平均 MSE,方差将相同并等于 Var(SE)/Npop。所以答案是每个k-fold的单个MSE数的方差随着k的增加而增加,但最终平均MSE的方差不依赖于折叠数。

根据折叠的 MSE 计算最终 MSE 的方差:

Var(MSE_final) = Mean(Var(MSE_folds))/k = Sum((MSE_folds - Mean(MSE_folds))^2)/k^2

基于折叠数的 MSE 变化 MSE 这里假设无穷大的 MSE 为 0.05。

单个 k 折 MSE 的方差基于折数而变化 Var_MSE 这里 Var(一个点的平方误差)假设为 10,观察次数为 1000。