搜尋意圖: 如果你在找「留一交叉驗證 是什麼」或「留一交叉驗證 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 留一交叉驗證(Leave-One-Out Cross-Validation, LOOCV)是 K 折交叉驗證的特例,每次將一個樣本作為驗證集,其餘所有樣本作為訓練集,重複執行 N 次(N 為樣本數),
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
留一交叉驗證(Leave-One-Out Cross-Validation, LOOCV)是 K 折交叉驗證的特例,每次將一個樣本作為驗證集,其餘所有樣本作為訓練集,重複執行 N 次(N 為樣本數),
核心概念
留一交叉驗證(Leave-One-Out Cross-Validation, LOOCV)是模型評估中最嚴格的交叉驗證形式。對於一個含 N 個樣本的資料集,LOOCV 執行以下流程:
- 對每個樣本 i(i = 1, 2, ..., N):
- 訓練集 = 所有樣本排除第 i 個,共 N-1 個樣本
- 驗證集 = 只有第 i 個樣本
- 訓練模型,記錄對第 i 個樣本的預測結果
- 對所有 N 次的預測結果計算整體效能指標
LOOCV 是 K 折交叉驗證(K-Fold CV)在 K = N 時的特例。
運作原理
偏誤-方差分析
LOOCV 的統計特性由偏誤與方差的取捨決定:
- 低偏誤(Low Bias):每次訓練集有 N-1 個樣本,幾乎等同於用全部資料訓練,因此對真實模型效能的估計偏誤很小。
- 高方差(High Variance):N 次的訓練集高度重疊(僅差一個樣本),導致各次預測結果高度相關,整體效能估計的方差反而比 5-Fold 或 10-Fold 更大。
這個反直覺的性質在 Hastie 等人的《統計學習基礎》中有嚴格證明:5-Fold 或 10-Fold CV 在方差上通常優於 LOOCV,而偏誤僅略高一些,因此 10-Fold CV 在大多數情況下是更好的選擇。
計算成本
一般 K-Fold CV 需訓練 K 個模型,而 LOOCV 需訓練 N 個模型。對於 N = 10,000 的資料集,若選 K = 10,LOOCV 的計算量是 10-Fold 的 1,000 倍。
部分模型提供 LOOCV 的解析解,無需真正訓練 N 個模型:
- 線性迴歸:可透過帽子矩陣(Hat Matrix)一次計算所有 LOOCV 預測值,時間複雜度與訓練一次模型相同。
- Ridge 迴歸(L2 正則化):同樣具備 LOOCV 的高效解析解。
這使得線性模型的 LOOCV 計算成本與其他 CV 方法相當。
Scikit-learn 實作
from sklearn.model_selection import LeaveOneOut, cross_val_score
from sklearn.linear_model import LogisticRegression
import numpy as np
loo = LeaveOneOut()
model = LogisticRegression()
# 對每個樣本做一次預測
scores = cross_val_score(model, X, y, cv=loo, scoring='accuracy')
print(f'LOOCV 準確率:{np.mean(scores):.4f} ± {np.std(scores):.4f}')
實際應用
小型資料集的模型選擇
當資料集規模小(N < 100),無法分割出獨立的驗證集時,LOOCV 是最大化利用資料的方式。常見於醫學研究(如稀有疾病預測,樣本數僅數十筆)或特殊工業品管情境。
Leave-One-Group-Out CV(LOGO-CV)
LOOCV 的衍生版本,適用於資料有自然分組結構時(如每個受試者的多次量測)。每次留出一個「組」作為驗證集,確保驗證集與訓練集來自不同受試者,更真實地評估模型的跨個體泛化能力。這在腦電波分析、使用者行為預測等個人化任務中非常重要。
與 Jackknife 估計的關係
統計學中的 Jackknife 刀切法與 LOOCV 形式完全相同,但目的略有不同:Jackknife 用於估計統計量(如相關係數)的偏誤與標準誤,而 LOOCV 用於估計模型的泛化效能。
常見誤區
誤區一:LOOCV 一定比 K-Fold 更準確 如前所述,LOOCV 雖然偏誤低,但方差高。在一般情況下,10-Fold CV 提供了更好的偏誤-方差平衡,是大多數情境的推薦選擇。LOOCV 的優勢主要體現在樣本數非常少(N < 50)的情境。
誤區二:LOOCV 總是計算成本很高 對於具備解析解的線性模型(線性迴歸、嶺迴歸),LOOCV 可以在不反覆訓練 N 個模型的情況下精確計算,成本與訓練一個模型相當,此時選用 LOOCV 是完全合理的。
誤區三:LOOCV 可以用於時序資料
時序資料必須維持時間順序,不能隨機抽取一個時間點作為驗證集而用未來資料訓練。時序資料應使用 TimeSeriesSplit,否則就是前視偏誤(Look-ahead Bias)。
與相關技術的比較
| 方法 | 折數 | 偏誤 | 方差 | 計算成本 | 推薦場景 |
|---|---|---|---|---|---|
| Holdout | 1 | 高 | 高 | 極低 | 大資料集、快速基線 |
| 5-Fold CV | 5 | 中 | 中 | 低 | 一般場景 |
| 10-Fold CV | 10 | 低 | 中 | 低 | 大多數推薦預設 |
| LOOCV | N | 極低 | 高 | 高(線性模型除外) | 小型資料集 |
| Stratified K-Fold | K | 低 | 中 | 低 | 不平衡分類問題 |
LOOCV 在統計理論上最接近「真正的泛化誤差估計」,但 10-Fold CV 在實務中因方差更小且計算成本可控,通常是更平衡的選擇。
常見問題
LOOCV 和 K-Fold CV 在偏誤與方差上有什麼取捨?
LOOCV 的每次訓練集包含 N-1 個樣本,幾乎等同於全部資料,因此對模型真實效能的估計偏誤極低。然而,N 次迭代的訓練集彼此高度重疊(只差一個樣本),導致各次預測結果高度相關,整體估計的方差反而較高。10-Fold CV 的每次訓練集為 90% 的資料,偏誤略高,但各折訓練集之間重疊較少,估計的方差更小。研究顯示,10-Fold CV 通常在偏誤-方差的整體均方誤差上優於或持平 LOOCV,這也是業界普遍推薦 10-Fold 的統計學依據。
線性模型的 LOOCV 解析解是什麼?為什麼效率更高?
對於普通最小二乘法(OLS)線性迴歸,存在以下解析公式:LOOCV 的殘差等於普通殘差除以 (1 - hᵢᵢ),其中 hᵢᵢ 是帽子矩陣(Hat Matrix)H = X(XᵀX)⁻¹Xᵀ 的第 i 個對角元素,稱為槓桿值(Leverage)。這個公式允許一次計算所有 N 個 LOOCV 殘差,只需訓練一個模型的成本,使 LOOCV 對線性模型而言幾乎「免費」。嶺迴歸(Ridge Regression)也有類似的解析解,是模型選擇(調整正則化強度)的高效工具。
什麼情況下應該選 LOOCV 而不是 10-Fold CV?
主要有兩種情境:其一是資料集極小(通常 N < 50),每個樣本都非常珍貴,無法承受 10-Fold 時每折損失 10% 的訓練資料,此時 LOOCV 能最大化利用現有資料;其二是使用線性模型(OLS 或 Ridge),LOOCV 有解析解且計算成本與訓練一次模型相當,此時選 LOOCV 可以獲得最低偏誤的估計而無需額外計算代價。一般規模的資料集搭配複雜模型,應優先選擇 10-Fold CV。