iPAS AI 應用規劃師 中級 科目一

超參數過度調整怎麼避免?Cross-Validation 出手

原題 14

在調整模型超參數(Hyperparameters)時,若希望避免因過度調整參數而導致過擬合,下列哪一種做法最有效提升模型的泛化能力?

白話

模型有一些「人工設定的旋鈕」,不是訓練過程自己學出來的,叫做超參數(Hyperparameters),例如「要幾層神經網路」「學習率設多少」。

題目說:工程師在試不同的超參數設定時,擔心「試太多組合、調太細」,模型會死記測試資料的樣子,在真實資料上反而表現更差(這叫過擬合,overfitting)。

問你:要怎麼避免超參數調整導致過擬合,讓模型泛化能力最好?

點選你的答案。

01 總結

一句話總結

超參數調整時避免過擬合的最有效做法:用交叉驗證(Cross-Validation)在多組超參數組合間反覆評估,選驗證集上最穩定的那組設定,因為它用了資料的多個切分版本評估,結果比單次評估可靠得多。

02 情境

先感受問題:調了 100 組,哪組才是真的好?

假設「健康雲」的工程師林佳要訓練一個預測糖尿病風險的模型,她用隨機森林(Random Forest),有幾個超參數要設定:

樹的數量(n_estimators):試 50 / 100 / 200
樹的最大深度(max_depth):試 3 / 5 / 10 / None
最小分裂樣本數(min_samples_split):試 2 / 5 / 10

總共 3 × 4 × 3 = 36 組組合要試。

林佳的問題是:如果每次都只用同一批「驗證資料」來評估哪組好,可能會不小心選到「剛好在這批驗證資料上運氣最好」的設定,而不是「真正泛化最好」的設定。

這個現象叫做資料洩漏(data leakage)或「驗證集過擬合」:調太多組之後,你已經隱性地「學了」這批驗證資料的偏好。

03 對照

單次固定切分驗證,為什麼靠不住

林佳如果只用一個固定的 80/20 切分(80% 訓練、20% 驗證),會踩到五個坑:

  1. 評估結果依賴切分運氣:這 20% 的驗證資料碰巧包含了某種特殊樣本,評估結果就會偏高或偏低,不代表真實泛化能力。
  2. 資料量浪費:有 80% 訓練、20% 驗證,而訓練資料如果再切出「超參數調整用的驗證集」,實際能訓練的資料更少。
  3. 驗證集被重複使用產生偏差:試了 36 組超參數後,選出「在這個驗證集分數最高」的那組,但你已經用了驗證集的資訊來選擇,這組設定的真實表現通常比驗證集分數差。
  4. 小資料集更不可靠:驗證集只有幾百筆,幾個異常樣本就能讓評估分數大幅波動,很難判斷哪組超參數真的好。
  5. 測試集也被汙染:如果工程師忍不住多看幾次測試集結果,測試集也開始參與了「選哪組超參數」的決策,測試集就失去了它的客觀性。
04 解法

Cross-Validation 怎麼讓評估更可靠

林佳改用 5-fold 交叉驗證(5-fold Cross-Validation)來評估每一組超參數:

  1. 把訓練資料切成 5 等份
  2. 第一輪:用第 2~5 份訓練,第 1 份驗證,記錄分數
  3. 第二輪:用第 1、3~5 份訓練,第 2 份驗證,記錄分數
  4. 第三輪到第五輪:同樣每次換一份出來驗證
  5. 5 輪的分數取平均,這才是這組超參數的「代表分數」

這樣的好處是:

  • 每筆資料都有機會被驗證過,不依賴「運氣」
  • 5 個分數取平均,異常值的影響被稀釋
  • 可以看 5 個分數的標準差,判斷這組超參數是否「穩定」

林佳從 36 組組合裡,選出「5-fold CV 平均分最高且標準差最小」的那組,這才是真正泛化穩定的設定。

這就是選項 A 講的:採用交叉驗證(Cross-Validation)於多組超參數組合間反覆評估,選擇在驗證資料上表現最穩定的設定

技術版:Cross-Validation 的程式碼與 Nested CV

中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。

用 scikit-learn 跑超參數搜尋 + 交叉驗證的完整流程:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV, cross_val_score

# 定義超參數搜尋空間
param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [3, 5, 10, None],
    'min_samples_split': [2, 5, 10]
}

# GridSearchCV:窮舉所有組合 + 5-fold CV 評估每一組
grid_search = GridSearchCV(
    estimator=RandomForestClassifier(random_state=42),
    param_grid=param_grid,
    cv=5,               # 5-fold Cross-Validation
    scoring='roc_auc',  # 評估指標
    n_jobs=-1           # 用全部 CPU 並行加速
)

grid_search.fit(X_train, y_train)

print("最佳超參數:", grid_search.best_params_)
print("最佳 CV 分數:", grid_search.best_score_)
Step 1 純故事版
  1. 列出所有超參數組合(36 組)
  2. 對每一組,做 5-fold CV(資料切 5 份,輪流驗證 5 次)
  3. 算出每組的平均分數和標準差
  4. 選出平均分最高的那組
  5. 用這組超參數在全部訓練資料重新訓練最終模型
Step 2 中文 ↔ 程式碼對照
故事程式碼
搜尋所有超參數組合GridSearchCV(param_grid=param_grid)
用 5-fold CV 評估每組cv=5
訓練並找最佳設定grid_search.fit(X_train, y_train)
拿到最佳超參數grid_search.best_params_
拿到最佳 CV 分數grid_search.best_score_
Step 3 符號角色表
GridSearchCV
暴力搜尋:把 param_grid 裡所有組合都試過,每組都做 Cross-Validation,找出最佳組合。
cv=5
5-fold Cross-Validation:把資料切成 5 份,輪流拿 1 份驗證、4 份訓練,跑 5 輪。
scoring='roc_auc'
評估指標,這裡用 ROC-AUC(適合二元分類)。可以換成 'accuracy'、'f1' 等。
best_params_
在 CV 上平均分數最高的超參數組合。
best_score_
最佳組合的 CV 平均分數(不是測試集分數!)。
Step 4 完整公式對應

本題沒有複雜數學公式,但理解 k-fold CV 的評估公式很重要:

# k-fold CV 的評估分數計算
CV_score = (1/k) × Σ score(fold_i)

# 其中 score(fold_i) 是第 i 折的驗證集分數
# k = 折數(通常 5 或 10)
# 標準差 std = sqrt( (1/k) × Σ (score_i - CV_score)² )
# std 越小 = 這組超參數越穩定
Step 5 自我複述

蓋住程式碼,說出 GridSearchCV + 5-fold CV 的流程:

  1. 定義要試的超參數清單(param_grid)
  2. GridSearchCV 窮舉所有組合
  3. 每組超參數做 5-fold CV,資料切 5 份輪流驗證
  4. 計算每組的平均分數和標準差
  5. 選出最穩定(分高且 std 小)的那組
05 陷阱

為什麼其他選項是錯的

B使用早期停止機制(Early Stopping)監控訓練誤差並在收斂前停止訓練,以防模型學習過度

字面在說什麼

早期停止(Early Stopping)是在訓練過程中監控驗證集的誤差,一旦驗證誤差開始上升(訓練誤差還在降),就停止訓練。

為什麼不對

Early Stopping 是用來防止「訓練輪數(epoch)」這個超參數過大,也就是防止模型在固定超參數下訓練太久的過擬合。但題目問的是「調整多組超參數組合時」的過擬合,也就是超參數搜尋本身的問題,Early Stopping 解決不了「選哪組超參數」的評估可靠性問題。這兩個是不同層次的問題,Early Stopping 只管訓練時間,不管哪組超參數真的泛化最好。

誰會選錯

知道 Early Stopping 能防過擬合,但沒注意題目說的是「超參數組合選擇」的問題。Early Stopping 確實是好技術,但它是在「訓練一個固定設定的模型」時才用,不是在「比較多組超參數」時用。

C對輸入特徵進行標準化以減少特徵值差異帶來的過擬合風險

字面在說什麼

把特徵標準化(讓每個特徵的平均值是 0、標準差是 1),可以避免某個特徵值特別大或特別小影響模型學習。

為什麼不對

標準化確實是好的資料預處理步驟,對梯度下降類的模型(神經網路、SVM、線性迴歸)確實有幫助。但它解決的是「特徵尺度不均勻」的問題,不是「超參數搜尋時評估不可靠」的問題。就算特徵都標準化了,如果用單次切分評估 36 組超參數,照樣會選到「在這批驗證資料上運氣好」的那組。

誰會選錯

把「資料預處理優化」和「超參數評估方法」混在一起的人。兩者都重要,但方向完全不同:標準化改善模型訓練品質,Cross-Validation 改善評估可靠性。

D提高模型複雜度並使用更多超參數搜尋範圍,以確保模型能充分學習資料特徵

字面在說什麼

把模型設定得更複雜、搜尋更多超參數組合,讓模型學到更多。

為什麼不對

這完全反方向。題目說想「避免因過度調整而導致過擬合」,選項 D 卻建議「提高複雜度、擴大搜尋範圍」,這會讓過擬合更嚴重,不是解法。複雜模型 + 大量超參數組合,搭配不可靠的評估方法,是過擬合的完美配方。

誰會選錯

把「模型更複雜」等同於「模型更強」的人。複雜模型在訓練集上確實表現更好,但泛化能力不一定更強。避免過擬合要的是「適當複雜度 + 可靠評估方法」,不是「越複雜越好」。

06 變形

同個考點下次怎麼變形

變形 1 邊界

k-fold CV 的 k 要設幾?5 和 10 有什麼差?

直覺

k 越大,每次訓練的資料越多,評估應該越準,那是不是 k 越大越好?

答案

k 越大,偏差(bias)越小(每次用了更多訓練資料),但變異(variance)越大(k 個評估分數彼此差異增加),而且計算成本增加 k 倍。實務慣例:k=5 是最常用的平衡點,k=10 適合資料量足夠的情況。極端情況是 Leave-One-Out CV(k = 樣本數),計算成本極高,只在資料量很小時才考慮。

變形 2 反例

用 Cross-Validation 選出超參數後,還需要測試集嗎?

直覺

CV 已經評估得很可靠了,CV 分數就是最終答案,不需要再測試了?

答案

還需要。CV 分數是「超參數選擇」的依據,但只要用了任何資料來選模型,那份資料就在某種程度上「參與了決策」。測試集要完全封存,不參與超參數調整的任何環節,只在最後最終報告模型效能時用一次。正確流程是:訓練集做 CV 選超參數,最後用測試集做一次評估,這個分數才是對「陌生資料」效能的無偏估計。

變形 3 升級版

什麼是 Nested Cross-Validation(巢狀交叉驗證)?

直覺

普通 CV 已經很複雜了,為什麼還要「巢狀」?

答案

普通 GridSearchCV + CV 會有個問題:用來選超參數的那份資料(inner CV)和用來評估的資料有部分重疊,最終報告的 CV 分數會略微樂觀。Nested CV 解決這個問題:外層 CV 切分資料用來評估「整套超參數選擇流程」的效能,內層 CV 在每個外層訓練集上做超參數搜尋。計算成本很高(outer_k × inner_k × 組合數次訓練),但得到的效能估計最無偏。

變形 4 跨領域

時間序列資料能用一般的 k-fold CV 嗎?

直覺

股價預測、用電量預測都是時間序列,直接做 k-fold 隨機切分?

答案

不能用一般 k-fold。因為時間序列的未來資訊不能「洩漏」給過去的訓練資料:如果隨機切分,可能用 2025 年的資料預測 2024 年的值,這種訓練在實際部署時不存在。時間序列要用 Time Series Split(時間順序分割):永遠用過去預測未來,每一折的訓練集都完全在驗證集的時間點之前。

變形 5 評估指標

怎麼判斷 CV 分數顯示模型過擬合還是欠擬合?

直覺

CV 跑完得到一堆分數,怎麼解讀?

答案

看兩個差距。第一是「訓練集分數 vs CV 分數」:如果訓練集準確率 99%、CV 分數 75%,差距很大,代表過擬合(模型記住訓練資料,泛化差)。第二是「CV 分數 vs 理論上限」:如果 CV 分數只有 60%,但這個問題理論上人類能達到 80%,代表欠擬合(模型太簡單沒學到位)。理想狀態是訓練集分數和 CV 分數都高且接近。

07 延伸

想再往下看,這 5 個

  • 交叉驗證(Cross-Validation)正解核心:把資料切成 k 份輪流驗證,平均分數比單次切分更可靠,是超參數調整避免評估偏差的標準方法。
  • 超參數調校(Hyperparameter Tuning)本題的核心任務,GridSearch 或 RandomizedSearch 搭配 Cross-Validation 是業界標準的調參流程。
  • 過擬合(Overfitting)題目要避免的問題:超參數調整次數過多時,驗證集也會被「學到」,導致選出的設定在新資料上表現更差。
  • 泛化能力(Generalization)機器學習的終極目標,Cross-Validation 評估的是模型在未見資料上的穩定表現,正是泛化能力的代理指標。
  • 驗證資料集(Validation Set)用於評估超參數設定的資料集,k-fold CV 讓每份資料輪流當驗證集,避免依賴單一切分造成評估偏差。
出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 14 題

查看官方原文 PDF