iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用

交叉驗證怎麼評估模型泛化能力?

原題 01

某零售企業建立一個銷售預測模型,希望評估該模型在不同月份的新資料上,是否仍能維持穩定的預測表現。資料科學團隊計畫利用統計方法檢驗模型對未觀察資料的適應能力與泛化效果。下列哪一種方法最適合用於此目的?

白話

一家零售公司的資料科學團隊建了一個銷售預測模型,想知道這個模型拿到以前沒看過的月份資料時,預測表現能不能維持穩定。他們要用統計方法來驗證模型的適應能力與泛化效果。

問你:哪一種方法能評估模型對未觀察資料的泛化效果?

點選你的答案。

01 總結

一句話總結

要評估模型對未見資料的泛化能力,用交叉驗證(Cross-Validation):把資料切成多份,輪流拿一份當測試集,其餘當訓練集,取平均誤差,就能看出模型在真實新資料上的穩定性。

02 情境

先感受問題:模型在歷史資料上準,就代表未來也準嗎?

假設你是全聯福利中心的資料科學師。你用 2024 年 1 月到 10 月的銷售資料訓練了一個模型,在這 10 個月上測試誤差很低。老闆問:「11 月、12 月的預測我能信嗎?」

你開始擔心:

  • 模型是不是把訓練資料「背起來」了,碰到新月份就失準?
  • 我只有一組訓練集、一組測試集,這樣的評估夠不夠可靠?

你需要一個方法,讓模型「模擬真實遇到新月份」的表現,而且要多試幾次才能信任這個結論。

03 對照

只用一次訓練測試分割的問題

最簡單的評估方法是:把資料切成 80% 訓練、20% 測試,跑一次,看誤差。但這樣有幾個問題:

  1. 測試集太小:只有 20% 資料,誤差可能因為那幾筆資料的特殊性而偏高或偏低,不代表真實情況。
  2. 切法影響結果:切在不同地方,誤差可能差很多,你不知道哪次比較可信。
  3. 無法觀察穩定性:只有一個分數,你不知道模型是「每次都差不多準」還是「有時準有時不準」。
  4. 浪費訓練資料:80% 做訓練,但另外 20% 的資訊在訓練時完全沒用到。
  5. 看不出跨時間的泛化性:如果資料有時間序列性質(例如每月銷售),隨機切割可能讓「未來」的資料混進訓練集,低估真實誤差。
04 解法

交叉驗證怎麼解

以 5 折交叉驗證(5-Fold Cross-Validation)為例,把全聯的 10 個月資料切成 5 份:

  • 第 1 輪:月份 1-2 當測試集,月份 3-10 當訓練集 → 誤差 E1
  • 第 2 輪:月份 3-4 當測試集,其餘當訓練集 → 誤差 E2
  • ……以此類推,共跑 5 輪
  • 最終誤差 = (E1 + E2 + E3 + E4 + E5) / 5

每一份資料都當過一次測試集,沒有浪費。5 個誤差的分佈告訴你模型穩不穩定:若 5 個值很接近,代表泛化能力好;若起伏很大,代表模型對資料分布敏感。

這就是選項 B 講的:交叉驗證(Cross-Validation)

技術版:交叉驗證在機器學習中的位置與實務

交叉驗證(Cross-Validation)屬於機器學習的模型評估(Model Evaluation)與模型選擇(Model Selection)範疇,是監督式學習流程中必不可少的一環。

在 AI 領域的位置:ML 訓練流程大致是「資料前處理 → 特徵工程 → 模型訓練 → 模型評估 → 部署」。交叉驗證發生在「模型評估」這一步,也常用在「超參數調校」中,用來選出最佳的超參數組合。

實務上誰在用:任何需要「判斷模型是否過擬合」或「比較多個模型」的場景都會用到。特別是資料量有限時(例如幾百到幾千筆),一次性分割的評估可信度低,交叉驗證能讓評估結果更穩健。

跟相關術語的對比:

  • Hold-out 驗證:只切一次,快但不穩。交叉驗證切多次,慢但可信。
  • 留一法(Leave-One-Out):極端版的 K-Fold,K 等於樣本數,每次只留一筆測試,計算成本極高但偏差最小。
  • 時間序列資料:不能隨機 K-Fold,要用「向前滾動驗證」(Walk-Forward Validation),確保訓練集永遠在測試集之前。

為什麼出題者要考這題:交叉驗證是每個資料科學師的基本功,也是理解「過擬合」與「泛化」這兩個核心概念的前提。能否正確區分交叉驗證與假設檢定(F 檢定、t 檢定、卡方檢定),考驗應試者是否真正理解模型評估的目的。

05 陷阱

為什麼其他選項是錯的

AF 檢定(F-test)

字面在說什麼

F 檢定是統計學裡用來比較兩組或多組變異數是否有顯著差異的方法,也用在線性迴歸的整體顯著性檢定。

為什麼不對

F 檢定用來檢驗「變異數是否相等」或「模型整體是否顯著」,而不是用來評估模型對新資料的泛化能力。它回答的問題是「這些資料組之間有無顯著差異」,不是「模型在未見資料上準不準」。

誰會選錯

看到「統計方法」就聯想到 F 檢定、t 檢定這類假設檢定的人。這些方法是用來做統計推論的,不是用來評估機器學習模型泛化能力的工具。

C配對樣本 t 檢定(Paired-sample t-test)

字面在說什麼

配對樣本 t 檢定用來比較同一組樣本在兩個條件下的平均值是否有顯著差異,例如同一群人服藥前後的血壓。

為什麼不對

這個方法需要「同一組樣本、兩個測量時間點」的設計,用來推論兩個條件是否顯著不同。它不能告訴你一個預測模型在新資料上是否泛化良好。

誰會選錯

統計學課讀到一半,把「比較兩組」和「評估模型」混在一起的人。記住:t 檢定是假設檢定工具,用於推論群體差異;交叉驗證是模型評估工具,用於估算泛化誤差。

D卡方檢定(Chi-square Test)

字面在說什麼

卡方檢定用來分析類別型資料的獨立性或適合度,例如「性別」與「是否購買」有沒有關聯。

為什麼不對

卡方檢定處理的是類別型資料之間的關聯性,而非數值型預測的準確性。銷售預測是迴歸問題,產出連續數值,卡方檢定完全不適用於評估這類模型的泛化能力。

誰會選錯

記得卡方檢定是「測資料好不好」的人,誤以為它可以測模型好不好。兩者的「好不好」意義完全不同:卡方是檢驗資料分布的假設,交叉驗證是估算預測誤差的實際值。

06 變形

同個考點下次怎麼變形

變形 1

K-Fold 的 K 值怎麼選?

直覺

K 越大,每次訓練用的資料越多,估計越準,但要跑 K 次,計算成本越高。

答案

實務上 K=5 或 K=10 是最常見的選擇,兼顧偏差與計算成本。資料量非常小時才考慮 Leave-One-Out(K 等於樣本數)。

變形 2

時間序列資料可以用隨機 K-Fold 嗎?

直覺

月份有先後順序,用未來資料訓練、過去資料測試,會高估模型在真實場景的表現。

答案

不行。時間序列要用「向前滾動驗證」(Walk-Forward Validation):每次訓練集只包含比測試集更早的資料,確保不洩漏未來資訊。

變形 3

交叉驗證可以用來做超參數調校嗎?

直覺

網格搜尋(Grid Search)搭配交叉驗證,是機器學習裡非常常見的組合。

答案

可以,而且是標準做法。在每個超參數組合下跑一次 K-Fold,取平均誤差,選出誤差最低的組合。注意:最終仍要用獨立測試集評估,不能把調校用的 CV 分數當作最終效能。

變形 4

交叉驗證分數很好,部署後效能卻下滑,為什麼?

直覺

CV 是在歷史資料上評估,真實世界的資料分布可能跟訓練期間不一樣。

答案

這是「資料漂移」(Data Drift)或「概念漂移」(Concept Drift)的症狀:真實世界的資料分布隨時間改變,但模型還是舊的。解法是定期用新資料重新訓練,並設置線上監控指標。

變形 5

分層 K-Fold(Stratified K-Fold)是什麼,什麼時候用?

直覺

如果資料不平衡(例如詐欺偵測,99% 正常、1% 詐欺),隨機切割可能某一折完全沒有詐欺案例。

答案

分層 K-Fold 確保每一折的類別比例與整體資料一致,避免某些折缺少少數類別。分類問題、資料不平衡時必用。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用 第 1 題

查看官方原文 PDF