在对模型选择进行交叉验证时,我发现有很多方法可以引用交叉验证分数的"标准差"(这里的"分数"是指评估指标,例如准确性、AUC、损失等)
1)一种方法是计算K折分数平均值的标准差(=K折的标准差/sqrt(K))。
2)第二种方法是只计算K折分数的标准差。可以在此处找到一个示例:
http://scikit-learn.org/stable/auto_examples/svm/plot_svm_anova.html
3)另一种我不完全理解的方式。它似乎计算了 K 折叠/sqrt(N) 的标准偏差,其中 N 是数据集的大小......
http://scikit-learn.org/stable/auto_examples/exercises/plot_cv_diabetes.html
我个人认为 1) 是正确的,因为我们更关心样本均值的标准误差(这里 = K 折叠验证的平均分数)而不是样本的标准差。谁能解释哪种方式更可取?
在这些情况下没有太多矛盾。
- K
- 折/sqrt(K) 的标准偏差是分数的标准误差。
- 在提到的链接中,他们使用标准差而不是分数的标准误差。
- 在此链接中,他们像 1) 一样计算标准误差,但他们使用变量名称"n_folds"而不是"k"。在这种情况下,N (n_folds) 不是数据集的大小。
标准差是分数变化的度量(如果计算一个分数(对于 k 折之一))。标准误差是 k 折分数平均值变化的度量。
查找分数的"真实"值时,请按以下方式使用标准误差:
分数的真实值是
- 在(平均值 - 标准误差)到(平均值 + 标准误差)范围内,概率约为 68%
- 在(平均值 - 2*标准误差)到(平均值 + 2 标准误差)范围内,概率约为 95%
(这些范围称为置信区间。