张芷铭的个人博客

LOOCV 是 K 折交叉验证的极端情况(K=N),适用于超小数据集,最大化数据利用率。

基本流程

将 N 个样本划分为 N 份,每次取 1 个验证,N-1 个训练,循环 N 次。

示例(N=5)

1
2
3
4
数据集: [1, 2, 3, 4, 5]
第1次: 训练 [2,3,4,5], 验证 [1]
第2次: 训练 [1,3,4,5], 验证 [2]
...

代码实现

1
2
3
4
5
from sklearn.model_selection import LeaveOneOut, cross_val_score

loo = LeaveOneOut()
scores = cross_val_score(model, X, y, cv=loo, scoring='accuracy')
print("LOOCV 平均准确率:", scores.mean())

优缺点

优点缺点
最大化数据利用计算成本高(N 次训练)
评估稳定方差可能较大
避免过拟合不适合大数据集

适用场景

  • ✅ 医学诊断(样本稀缺)
  • ✅ 实验数据
  • ❌ 大数据集

与 K-Fold 对比

方法训练集验证次数计算开销
K-FoldK-1 份K 次中等
LOOCVN-1 份N 次

K=5 或 K=10 是更常用的选择。

Comments