歡迎來到模型評估與交叉驗證!

你好!歡迎來到 CS2 機器學習 (Machine Learning) 課程中最實用的章節之一。到目前為止,你可能已經學會了如何建立模型。但我們如何知道一個模型是否真的「好」呢?如果我們只在構建模型時所用的同一組數據上進行測試,模型看起來可能表現得像個明星,但當我們嘗試將其應用於現實世界的保險索賠時,卻可能慘遭滑鐵盧。

在本章中,我們將學習利用交叉驗證 (Cross-validation) 來對模型進行「壓力測試」的技巧。我們還會學到如何調整模型的「秘密設定」,即超參數 (Hyper-parameters)。讓我們開始吧!

1. 參數 (Parameters) 與超參數 (Hyper-parameters) 的區別

在評估模型之前,我們需要了解我們究竟在調整什麼。在機器學習中,有兩種類型的「旋鈕」可以調校:

參數 (Parameters)

這些是模型從數據中自動學習到的內部數值。例如,在線性迴歸 \( y = \beta_0 + \beta_1 x \) 中,係數 \( \beta_0 \) 和 \( \beta_1 \) 就是參數。你不需要手動選擇它們,數據會自動決定這些值。

超參數 (Hyper-parameters)

這些是需要(精算師)在學習過程開始之前就必須決定的設定。它們控制模型是如何進行學習的。

類比:想像你在為馬拉松比賽進行訓練。你在跑步過程中的心率肌肉力量參數(它們會隨著訓練而適應);而你選擇的訓練計劃時長跑鞋品牌則是超參數(你需要事先決定這些,以達到最佳效果)。

快速回顧:

  • 參數:從數據中學習得來(例如:神經網絡中的權重)。
  • 超參數:由精算師預先設定(例如:K-近鄰算法中的 \( k \) 值,或決策樹的深度)。

2. 黃金法則:訓練集、驗證集與測試集

為了觀察模型在未見過的新數據上表現如何,我們不應該將所有數據都用於訓練。相反,我們將數據集分為三個獨立的部分:

  1. 訓練集 (Training Set):模型用來「學習」規律的數據。
  2. 驗證集 (Validation Set):用於「調校」模型。我們嘗試不同的超參數,看看哪一組參數在這個集上的表現最好。
  3. 測試集 (Test Set):這是「期末考試」。你只能在最後階段使用它一次,以確認最終模型在全新數據上的表現。

必須避免的常見錯誤:千萬、絕對不要利用測試集來決定模型的超參數!如果你這樣做,就是在「洩露」信息,最終得到的測試結果將會過於樂觀,產生偏誤。

核心要點:

訓練集是用來學習的,驗證集是用來選擇最佳設定的,而測試集是用於最終的性能檢核。

3. 什麼是交叉驗證?

如果我們的數據集很小,將其分為三份可能會導致模型學習用的數據太少。交叉驗證 (Cross-validation) 是一種更有效地利用數據的聰明方法。

K-折交叉驗證 (K-fold Cross-validation)

這是最常用的技術,以下是具體步驟:
1. 將數據分成 \( k \) 個等份(稱為「折」或 folds)。
2. 取其中一折作為驗證集,剩下的 \( k-1 \) 折作為訓練集
3. 訓練模型並計算驗證集上的誤差(例如:均方誤差 Mean Squared Error)。
4. 重複上述過程 \( k \) 次,每次輪流使用不同的一折作為驗證集。
5. 計算這 \( k \) 次誤差估計的平均值,這就是你的交叉驗證誤差 (Cross-validation Error)

如果覺得這很複雜,別擔心! 把它想像成一個循環賽,每支隊伍都有機會輪流休息(充當驗證集),而其他隊伍則參與比賽(充當訓練集)。

留一法交叉驗證 (Leave-One-Out Cross-Validation, LOOCV)

這是 K-折交叉驗證的一種極端版本,其中 \( k \) 等於觀察值的數量 (\( n \))。每一次,你都使用除了一個數據點之外的所有數據來訓練模型,然後在那個被遺漏的單一數據點上進行測試。這種方法非常精確,但如果你的數據量很大,計算起來會非常耗時

你知道嗎? 在精算工作中,使用 \( k=5 \) 或 \( k=10 \) 是標準做法。這在計算速度和模型性能估計的準確性之間取得了很好的平衡。

4. 利用交叉驗證進行超參數調校

我們如何找到「最佳」的超參數?我們使用稱為網格搜索 (Grid Search) 的方法,結合交叉驗證來進行:
1. 定義一系列可能的超參數值(例如,嘗試某模型的 \( k=1, 3, 5, 7, 9 \))。
2. 對於每一個數值,執行 K-折交叉驗證。
3. 比較每個數值的平均誤差。
4. 選擇那個能產生最低平均誤差的數值。

核心要點:

交叉驗證幫助我們選擇能讓模型在處理新數據時具有良好泛化 (Generalization) 能力的超參數,而不是讓模型僅僅記住了訓練數據。

5. 過度擬合與擬合不足

交叉驗證的全部意義在於找到兩個極端之間的「黃金分割點」:

  • 擬合不足 (Underfitting):模型太過簡單(就像用直線來擬合曲線規律)。它在訓練集和驗證集上的表現都很差。
  • 過度擬合 (Overfitting):模型太過複雜(它記住了數據中的噪聲)。它在訓練集上的表現完美,但在驗證集上的表現卻極差

記憶小撇步:
過度擬合就像是死記硬背特定練習題的答案。
泛化(我們想要的)則像理解了核心概念,這樣你就能回答任何相關題目。

重點摘要

1. 超參數是由精算師選擇的設定(而非模型自動學習的)。
2. 交叉驗證(特別是 K-折)是一種用來估計模型在未見過數據上表現的技術。
3. 驗證集用於調校超參數,而測試集僅用於最終評估。
4. K-折涉及將數據分成 \( k \) 等份,並輪流將其中一份作為「測試」數據。
5. LOOCV 是 \( k = n \) 的 K-折交叉驗證。
6. 目標:最小化交叉驗證誤差,以避免過度擬合

恭喜你!你已經掌握了 CS2 機器學習模型評估的核心內容。繼續練習這些概念,你將在通往精算建模卓越的道路上邁進一大步!