iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用・114 年第二次・L22・第 40 題

這段虛擬程式碼在描述哪一種驗證法?

原題

請參考附圖,下列虛擬程式碼(pseudocode)最可能是在描述何種驗證法? Input: - data_set: 包含 N 筆資料的資料集 - model_training_function: 用來訓練模型的函式 - model_evaluation_function: 用來評估模型的函式(如計算誤差或準確率) Output: - 平均評估指標(如平均準確率或平均誤差) Algorithm: 1. 初始化評估指標列表 metrics = [] 2. 對 i = 1 到 N: a. 將第 i 筆資料作為測試集 test_data b. 將其餘 N-1 筆資料作為訓練集 train_data c. 使用 model_training_function 在 train_data 上訓練模型 d. 使用訓練好的模型對 test_data 做預測,計算評估指標 metric_i e. 將 metric_i 加入 metrics 3. 計算 metrics 的平均值 mean_metric 4. 回傳 mean_metric

白話

有一段虛擬程式碼,它的運作方式是:每次從 N 筆資料中拿出第 i 筆當測試集,用剩下 N-1 筆訓練模型,這樣重複 N 次(每筆資料輪流當一次測試),最後取 N 次評估指標的平均值。

問你:這段程式碼描述的是哪一種模型驗證方法?

一句話總結

每次只留一筆當測試、用剩下 N-1 筆訓練,重複 N 次取平均,這就是留一交叉驗證 LOOCV(Leave-One-Out Cross Validation),它是 K-fold 的極端特例:K=N。

情境

先感受問題:小資料集要怎麼評估模型

「北城醫療研究」的研究員文哲,手上有一個珍貴的罕見疾病資料集,只有 50 筆病患記錄,每一筆都是花了大量人力標註的。

他要評估一個分類模型的效能,但 50 筆資料如果切成訓練集和測試集,測試集可能只有 10-15 筆,評估結果不穩定、方差太大。

文哲需要一個方法,讓每一筆資料都被拿去測試,同時訓練集盡量大(用 N-1 筆)。這樣評估結果最接近「用所有資料訓練的模型效能」,且偏差最小。

舊方法

其他驗證方式在小資料集上的問題

  1. Hold-out 切一次就完,評估不穩定:隨機切 70/30,測試集只有 15 筆,碰到分佈偏斜就差很多,重跑一次結果可能差 5-10%。
  2. K-fold 每折測試集仍有多筆,評估不夠細緻:5-fold 時每折測試集有 10 筆,LOOCV 每次只有 1 筆,後者對每個樣本的「留出評估」更精確。
  3. Bootstrap 有放回抽樣,訓練集可能重複同一筆:Bootstrap 訓練集用有放回抽樣,可能同一筆出現多次,訓練集代表性不如 LOOCV 的 N-1 筆不重複。
  4. 隨機切分每次結果不同,難以重現:Hold-out 和普通 K-fold 依賴隨機種子,不同種子結果不一樣,LOOCV 切法固定,結果確定性最高。
  5. 資料少時,統計量估計誤差大:測試集越少,指標方差越大;LOOCV 每次只測 1 筆是極端情況,N 次結果的方差雖然大,但平均偏差最小(偏差-方差取捨)。

新方法

讀懂 pseudocode 的三個關鍵線索

文哲看到這段 pseudocode,抓住三個識別 LOOCV 的關鍵:

  1. 循環從 i=1 到 N:重複 N 次,每次循環對應資料集中的一筆
  2. 測試集 = 第 i 筆,訓練集 = 其餘 N-1 筆:每次只留「一筆」出來,這就是「Leave-One-Out」的含義
  3. 最終取 N 次評估的平均值:不是看某一次的結果,是全部 N 次取平均

對比 K-fold:K-fold 的外層循環是「i=1 到 K」(通常 5 或 10),測試集是「第 i 折」(多筆);LOOCV 的外層循環是「i=1 到 N」,測試集是「第 i 筆」(一筆)。

這就是選項 B 講的:留一交叉驗證 LOOCV(Leave-One-Out Cross Validation)。

錯選項

為什麼其他選項是錯的

AHold-out 驗證(Hold-out Validation)

字面在說什麼

把資料分成訓練集和測試集(如 70/30),只訓練和評估一次。

為什麼不對

Hold-out 只分一次、評估一次,沒有循環;pseudocode 有 N 次循環,明顯不是 Hold-out。Hold-out 的特徵:「固定切分、一次訓練、一次評估」。

誰會選錯

看到「訓練集 / 測試集」就聯想 Hold-out,沒有注意到 pseudocode 有明顯的 N 次迴圈結構。

CK-fold 交叉驗證(K-fold Cross Validation)

字面在說什麼

把資料分成 K 折,每次用 K-1 折訓練、1 折測試,重複 K 次取平均。

為什麼不對

K-fold 的外層迴圈是「i=1 到 K」(K 通常是 5 或 10),測試集是「第 i 折」(多筆資料);pseudocode 的迴圈是「i=1 到 N」,測試集是「第 i 筆」(只有 1 筆)。LOOCV 可以理解為 K=N 的 K-fold,但當 K=N 時,每個測試集只有 1 筆,這是 LOOCV 的定義。

誰會選錯

知道這是交叉驗證的一種,誤以為「K-fold 是所有交叉驗證的統稱」,沒有區分 K-fold(K 固定為小數字)和 LOOCV(K=N)的差別。

D拔靴法(Bootstrap)驗證

字面在說什麼

有放回地從原始資料抽取多個訓練集,用每次未被抽到的樣本(out-of-bag)做評估。

為什麼不對

Bootstrap 的關鍵特徵是「有放回抽樣」,同一筆資料可能在訓練集裡出現多次;pseudocode 的 train_data 是「其餘 N-1 筆」(不放回,沒有重複),和 Bootstrap 的放回抽樣完全不同。

誰會選錯

記得 Bootstrap 也是一種模型評估方法,但不記得 Bootstrap 的關鍵特徵是「有放回抽樣」,把所有「重複評估」的方法都歸成 Bootstrap。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用 第 40 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。