💡一句話定義
交叉驗證(Cross-Validation)= 把資料切成 K 折(fold),輪流拿其中一折當驗證集、其餘當訓練集,重複 K 次,再把 K 次成績取平均。這樣估出來的表現,比單次切分更穩、更接近模型真正的泛化能力。
它主要用來評估模型、選模型、調超參數——不是拿來產出最終上線模型本身。
🎲為什麼不只切一次?
🎮互動:三種切法動起來
用下拉選單切換方法,按「播放」讓橘色驗證折逐折輪替。留意 Stratified 每折都保留相同比例的少數類(三角形),LOO 則每次只留一筆當驗證。
交叉驗證機制展示
Fold: 1 / 5
訓練集 (Training)
驗證集 (Validation)
📊三種方法對照表
| 方法 | 做法 | 適用 / 成本 |
|---|---|---|
| K-fold | 資料平分 K 份,輪流當驗證 | 最常用;K 常取 5 或 10 |
| Stratified K-fold | 每折都保留相同的類別比例 | 分類且類別不平衡時用,避免某折缺少少數類 |
| Leave-One-Out (LOO) | K=樣本數 N,每次只留一筆驗證 | 資料極少時;把資料用到極致,但計算很貴 |
🔢K 要設多少?
常用 5 或 10。K 越大 → 每次訓練資料越多、偏差越小,但折數多、計算越貴,且各折結果變異可能變大;K 越小則相反。資料非常少時可用 LOO(K=N)。實務上 5-fold 或 10-fold 是最常見的折衷。
⚠️小心資料洩漏(必考)
標準化、特徵選擇、調參都必須只在「訓練折」內做,再套用到驗證折——最好包進 Pipeline。如果先用「全部資料」做標準化或選特徵,驗證折的資訊就偷偷洩漏進訓練,成績會虛高、上線後現形。這是交叉驗證最常見也最愛考的陷阱。
✅自我檢測
Q1. 交叉驗證比單次切分好在哪?
單次切分成績受切法運氣影響大、變異高。交叉驗證讓每折輪流當驗證再平均,降低運氣成分,泛化評估更可靠、也能看出模型穩定度。
Q2. 什麼時候該用 Stratified K-fold?
分類任務且類別不平衡時。它讓每一折的類別比例與整體一致,避免某折完全沒有少數類而讓評估失真。
Q3. K 值大小的取捨是什麼?
K 越大偏差越小但計算越貴、變異可能變大;K 越小計算便宜但偏差較大。常用 5 或 10;資料極少時用 LOO(K=N)。
Q4. 交叉驗證最常見的資料洩漏是什麼?
把標準化、特徵選擇、調參用「全部資料」先做,導致驗證折資訊洩漏、成績虛高。正確做法是只在訓練折內做這些步驟,並包進 Pipeline。
🎯重點整理
- 是什麼:切 K 折輪流驗證再平均,穩健估計泛化表現。
- 用途:評估、選模型、調超參數(不是產出最終模型)。
- 方法:K-fold、Stratified(不平衡)、LOO(極少資料)。
- K 值:常用 5 或 10,權衡偏差、變異與成本。
- 陷阱:標準化/選特徵/調參只在訓練折內做,避免資料洩漏。