少量不平衡醫療資料,最適合哪種交叉驗證?
某醫療人工智慧團隊正在開發心臟病風險預測模型,資料量僅有 150 筆,其中陽性個案不到 8%。由於樣本數稀少且類別分佈極不平衡,團隊希望在有限資料下,仍能準確評估模型在不同資料上的表現穩定性,同時避免訓練資料被過度切分而影響模型效能。若團隊希望在有限樣本下,同時兼顧資料的利用率及各類別在驗證折中的比例一致性,最適合採用下列哪一種交叉驗證方法?
醫療 AI 團隊只有 150 筆資料,而且裡頭心臟病陽性個案不到 8%(類別嚴重不平衡)。他們想用交叉驗證評估模型,但要同時考慮兩件事:讓每一折的資料都能充分利用,而且每一折的陽性比例和整體一致。
問你:哪一種交叉驗證方法最能兼顧「資料利用率最大化」和「各折陽性比例一致」這兩個需求?
一句話總結
少量且類別嚴重不平衡的資料,交叉驗證最佳選擇是:分層留一法(Stratified LOOCV),它讓每次訓練用到 n-1 筆(資料利用率最高),同時透過分層確保每一折的陽性比例和整體資料一致。
先感受問題:12 個心臟病患者,如果都跑進驗證折怎麼辦?
「仁心醫療 AI」的研究員蔡醫師只有 150 筆心電圖資料:138 筆正常(92%),12 筆有心臟病風險(8%)。
她面對雙重困境:
困境 2:心臟病陽性只有 12 筆,如果驗證集裡剛好沒有陽性個案(全是正常人),評估結果根本沒有意義。
普通的 5-Fold 會把 150 筆分成 5 組,每組 30 筆。但這 12 個陽性案例可能因為隨機分配,導致某幾個驗證折完全沒有陽性,那折的評估就毫無意義。
分層留一法(Stratified LOOCV)的解法:每次只留出 1 筆當驗證,用其餘 149 筆訓練,共做 150 次,同時確保每次留出的那 1 筆是按類別比例選出的,陽性和陰性都有機會被留出。
其他交叉驗證方法對這個案例的問題
- 5-Fold 的問題(資料利用率):150 筆分 5 折,每折 30 筆當驗證。每次訓練只用 120 筆,剩下 30 筆閒置,對於只有 150 筆的資料來說,每次「浪費」20% 的資料。
- 5-Fold 的問題(類別不平衡):12 個陽性案例隨機分配到 5 折,平均每折 2-3 個。但隨機性可能導致某折完全沒有陽性,驗證結果不穩定,無法代表真實效能。
- 普通 LOOCV(留一法)的問題:資料利用率最高(每次用 149 筆),但沒有分層,12 個陽性在 150 次驗證中可能分配不均,且每次驗證集只有 1 筆,無法計算有意義的 Recall(因為驗證集要麼是陽性要麼是陰性,沒有「比例」)。
- 隨機交叉驗證的問題:完全隨機分割,無法保證每折的類別比例,對不平衡資料更危險,12 個陽性可能集中在同幾折,其餘折完全沒有陽性。
- 分層 5-Fold 的問題(相對):比普通 5-Fold 好(確保每折含陽性),但 150 筆資料下每折只有 2-3 個陽性個案,評估仍不穩定,且每次只用 80% 的資料訓練。
分層留一法:每次用 149 筆,確保陽性比例正確
蔡醫師採用分層留一法(Stratified LOOCV),流程如下:
・訓練集:149 筆(資料利用率 149/150 ≈ 99.3%,最高)
・驗證集:1 筆
分層保證:在 150 次中,12 個陽性個案各被留出至少一次,138 個陰性個案也各被留出至少一次,確保兩個類別的樣本都均勻參與驗證
最終評估:150 次驗證的結果平均,每個樣本都當過一次驗證集,每個模型都用了接近全部資料訓練,評估結果最穩定可靠。
這就是選項 D 講的:分層留一法交叉驗證(Stratified Leave-One-Out Cross Validation)。
技術版:LOOCV 的偏差與方差特性,以及分層的數學意義
留一法(LOOCV)在統計學上有一個重要性質:它是所有 k-Fold 中偏差(Bias)最小的,因為每次訓練用的資料量最接近完整資料集的大小(n-1 vs n)。但方差(Variance)較高,因為 150 個模型都在幾乎相同的訓練集上訓練,彼此高度相關,單個驗證點的結果波動較大。
分層(Stratification)的作用:確保每一折中各類別的比例和原始資料集一致。對於 8% 陽性的資料,分層讓每個驗證折都「代表」整體分布,而非因隨機性造成某折全是陰性。在 LOOCV 中,由於每次只驗證 1 筆,分層確保陽性和陰性樣本都有機會被驗證到。
計算成本:LOOCV 需要訓練 n 個模型(本題 150 個),比 5-Fold 的 5 個模型計算成本高很多。對大型資料集來說不實際,但對 150 筆的小資料集,成本可以接受。
適用場景:資料量很小(< 200)+ 類別不平衡時,分層 LOOCV 幾乎是最佳選擇。資料量中等(幾百到幾千)時,分層 10-Fold 是標準選擇(平衡計算成本和評估品質)。
為什麼其他選項是錯的
字面在說什麼:5-Fold 把資料分 5 折輪流驗證,能評估模型穩定性。
為什麼不對:150 筆資料的 5-Fold 每次用 120 筆訓練、30 筆驗證,資料利用率只有 80%,對小資料集是浪費。更嚴重的問題:12 個陽性個案隨機分進 5 折,平均每折 2-3 個,隨機性可能導致某折驗證集全是陰性,沒有達到「各類別比例一致性」的要求。
誰會選錯:記得「5-Fold 是標準做法」的人,忽略了這道題的兩個特殊條件:資料量極少和類別極不平衡。
字面在說什麼:每次留出一筆當驗證,資料利用率最高,最適合小資料集。
為什麼不對:普通 LOOCV 沒有分層,雖然資料利用率最高,但 12 個陽性個案在 150 次驗證中的分配是隨機的,不能保證「各類別在驗證折中的比例一致性」。題目明確要求「同時兼顧資料利用率及各類別在驗證折中的比例一致性」,普通 LOOCV 只達成了前半。
誰會選錯:只注意到「150 筆很少,LOOCV 資料利用率最高」,沒有注意到「分層」這個關鍵差異的人。選 B 的人差一點點,只缺了「分層」這個條件。
字面在說什麼:隨機分割資料進行交叉驗證,靈活且通用。
為什麼不對:「隨機」交叉驗證沒有固定的 Fold 數或分層機制,對類別不平衡的資料幾乎是最壞的選擇。完全隨機分割可能讓全部 12 個陽性個案集中在同幾折,其餘折完全沒有陽性,評估結果完全不可靠。既沒有解決資料利用率問題,也沒有解決比例一致性問題。
誰會選錯:不清楚各交叉驗證方法差異,覺得「隨機」代表「客觀」的人。
同個考點下次怎麼變形
直覺:資料量 150 筆,如果改用分層 10-Fold 而非分層 LOOCV,兩者有什麼不同?哪個更好?
答案:分層 10-Fold:每次訓練用 135 筆(90% 利用率),計算 10 個模型。分層 LOOCV:每次訓練用 149 筆(99.3% 利用率),計算 150 個模型。資料越少,LOOCV 的優勢越明顯;計算資源有限時,分層 10-Fold 是折衷。本題強調「同時兼顧資料利用率及比例一致性」,LOOCV 的利用率更高。
直覺:如果資料量有 50,000 筆,還適合用 LOOCV 嗎?
答案:不適合。LOOCV 需要訓練 n 個模型,50,000 筆資料需要訓練 50,000 個模型,計算成本極高。大資料集通常用 5-Fold 或 10-Fold 就夠,評估結果已夠穩定,不需要 LOOCV 的高資料利用率(因為資料本來就多)。
直覺:除了交叉驗證,處理類別不平衡還有哪些常用技術?
答案:過採樣(Oversampling):複製少數類別的樣本,如 SMOTE 合成新樣本。欠採樣(Undersampling):刪減多數類別,讓兩類平衡。調整類別權重(Class Weight):訓練時讓少數類別的誤分代價更高。使用 F1-score 或 AUC-ROC 而非 Accuracy 評估(因為 Accuracy 在不平衡資料上有誤導性)。
直覺:分層交叉驗證的「分層」概念,在多類別分類(multi-class)時如何應用?
答案:多類別時,分層確保每個類別在每個驗證折中的比例都和整體資料集一致。例如 10 個類別,比例各異(某類 1%、某類 50%),分層 k-Fold 讓每折的 10 個類別比例都和整體相同,避免某折某個類別一個樣本都沒有,導致無法計算該類的 Precision 或 Recall。
直覺:在 8% 陽性的心臟病預測任務中,LOOCV 評估應該看哪個指標最合適?
答案:不應該用 Accuracy(因為「全預測正常」就有 92% Accuracy,毫無意義)。應優先看 Recall(召回率,漏掉心臟病患者的代價高),配合 F1-score 或 AUC-ROC 作為綜合指標。在醫療場景下,漏診(False Negative)的代價遠高於誤診(False Positive),所以 Recall 更重要,可考慮 Fβ(β > 1)。
想再往下看,這 5 個
- 交叉驗證(Cross-Validation)本題核心概念:評估模型泛化能力的方法,透過多次分割訓練集和驗證集降低評估偏差。
- 資料不平衡(Data Imbalance)心臟病案例的核心挑戰:陽性比例 8% 的不平衡資料對分割方法和評估指標都有特殊要求。
- 過擬合(Overfitting)交叉驗證的目的之一是偵測過擬合,確保模型在未見資料上的表現和訓練集一樣穩定。
- 偏差方差權衡(Bias-Variance Tradeoff)LOOCV 偏差最小但方差較高,5-Fold 反之,選擇交叉驗證方法本質上是在做偏差方差的取捨。
- 資料擴增術(Data Augmentation)處理資料不足的另一路徑,透過生成合成樣本增加訓練資料,常與交叉驗證搭配使用。