K 折交叉验证:MSE 平均值和方差如何随 K 变化?
数据挖掘
交叉验证
2022-02-16 22:51:45
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
其它你可能感兴趣的问题


