歡迎來到超參數(Hyperparameters)的世界!
在我們之前學習廣義線性模型(GLMs)時,重心都放在如何為變量找到最佳的「權重」(係數)。但如果模型「太過」精明會怎樣呢?如果它學會了數據中的雜訊(noise)而非真正的規律(signal),又該怎麼辦?這就是正則化迴歸(Regularized Regression)登場的時候了,今天我們要學習用來控制模型的「調節旋鈕」:超參數(Hyperparameters)。
如果剛開始覺得有點複雜,別擔心!試著把超參數想像成路上的速限。駕駛(模型)總想開得越快越好,好盡快到達目的地(將誤差最小化),但速限(超參數)能確保駕駛保持安全,不會因為開太快而發生意外(過擬合 Overfitting)。讓我們一起深入了解吧!
什麼是超參數?
在標準的 GLM 中,模型會自動計算係數(\(\beta\))。這些被稱為參數(Parameters)。然而,超參數則是我們(數據分析師)在模型開始學習數據之前,必須預先設定的值。
在 Exam PA 和 R 語言的 glmnet 套件中,你需要掌握兩個主要的超參數:
1. \(\lambda\) (Lambda): 複雜度參數。
2. \(\alpha\) (Alpha): 彈性網絡(Elastic net)混合參數。
快速複習: 參數是由模型從數據中學習得來的;而超參數則是由使用者設定,用來控制學習過程的條件。
1. Lambda (\(\lambda\):懲罰力度)
在正則化迴歸中,我們在對數概似函數(log-likelihood function)中加入了一個「懲罰項」。這個懲罰項會阻止模型將係數(\(\beta\))設定得過大。而超參數 \(\lambda\) 正是用來控制這個懲罰有多嚴厲。
- 當 \(\lambda = 0\) 時: 沒有懲罰。模型的行為與標準 GLM 完全一致。如果你有很多變量,這通常會導致過擬合(Overfitting)。
- 當 \(\lambda\) 非常大時: 懲罰極重。模型被迫將係數壓得非常小(接近零)。這可能會導致欠擬合(Underfitting)。
- 目標: 找到一個「剛剛好」的 \(\lambda\) —— 不能太大,也不能太小。
類比: 想像 \(\lambda\) 是一種對變量數值大小徵收的「稅」。如果稅率為零,大家就會瘋狂消費(係數變大)。如果稅率是 100%,就沒人敢花錢了(係數為零)。我們想要的是一個能讓消費保持理性的稅率!
2. Alpha (\(\alpha\):懲罰類型)
雖然 \(\lambda\) 告訴我們懲罰多少,但 \(\alpha\) 決定了我們使用哪種懲罰。在 Exam PA 中,我們通常討論三種情況:
嶺迴歸(Ridge Regression,\(\alpha = 0\))
嶺迴歸使用 L2 範數(L2 norm) 懲罰,即係數平方和:\(\sum \beta_j^2\)。
關鍵特徵: 它會將所有係數向零縮減,但它們永遠不會真正變成零。它將所有變量保留在模型中,只是以一種「溫和」的形式存在。
Lasso 迴歸(\(\alpha = 1\))
Lasso 迴歸使用 L1 範數(L1 norm) 懲罰,即係數絕對值之和:\(\sum |\beta_j|\)。
關鍵特徵: Lasso 是「極簡主義者」。它有能力將係數精確地縮減為零。這意味著 Lasso 可以進行自動變量選擇(Automatic variable selection)。
彈性網絡(Elastic Net,\(0 < \alpha < 1\))
這是嶺迴歸和 Lasso 之間的折衷方案。當你有幾個變量之間存在相關性時,它非常有用。
記憶小撇步:
Lasso = Less variables(減少變量,它會把不重要的踢走)。
Ridge = Retains variables(保留變量,它全都留著)。
關鍵總結: \(\alpha\) 決定了正則化的風格(選擇性與縮減性),而 \(\lambda\) 決定了強度。
我們如何選擇最佳超參數?
我們不是靠猜的!我們使用一種稱為交叉驗證(Cross-Validation, CV)的程序。特別是 R 的 `cv.glmnet` 函數,這將是你考試時最好的朋友。
步驟指南:
1. 標準化數據: 在正則化之前,務必確保你的數值預測變量處於相同的尺度。(R 的 `glmnet` 預設會執行此操作!)。如果不這樣做,尺度大的變量(如「年收入」)與尺度小的變量(如「年齡」)受到的懲罰將會不公平。
2. 執行交叉驗證: 電腦會嘗試一系列的 \(\lambda\) 值。
3. 選出勝者: 我們通常會查看輸出中提供的兩個 \(\lambda\) 值:
- lambda.min: 交叉驗證誤差最低的 \(\lambda\) 值。如果你追求的是最準確的模型,選這個。
- lambda.1se: 在最小誤差的一個標準誤(standard error)範圍內,最大的 \(\lambda\) 值。如果你想要一個更簡單、更精簡(parsimonious)的模型(特別是對於 Lasso),請選這個。
你知道嗎? 在 Exam PA 考試中,如果題目要求一個「簡單」或「具備解釋性」的模型,lambda.1se 通常是首選,因為它產生的非零係數較少!
常見誤區避坑
1. 忘記標準化: 正如前面提到的,正則化受尺度影響。幸運的是,`glmnet` 會自動處理,但你應該在報告中提到這一點,以向評分員證明你理解這個概念!
2. 混淆 \(\alpha\) 和 \(\lambda\): 請記住,\(\alpha\) 通常是你主動選擇的(或是透過迴圈測試出來的),而 \(\lambda\) 是透過交叉驗證誤差圖中的「肘點(elbow)」或「谷底(dip)」找到的具體數值。
3. 忽視類別變量: 使用 Lasso 時,一個擁有 5 個類別的變量可能會有 3 個類別被「歸零」,剩下 2 個保留。這就是 Lasso 處理分組變量的方式。
總結清單
- 正則化(Regularization)透過懲罰大的係數來防止過擬合。
- \(\lambda\) (Lambda) 控制懲罰強度。高 \(\lambda\) = 更簡單的模型。
- \(\alpha\) (Alpha) 控制懲罰類型。\(\alpha=1\) 為 Lasso(變量選擇);\(\alpha=0\) 為 Ridge(係數縮減)。
- 交叉驗證(Cross-Validation)是用來找到最佳 \(\lambda\) 的工具。
- lambda.min 用於最佳擬合;lambda.1se 用於更簡單、更穩健的模型。
做得好!你已經掌握了正則化迴歸的調節旋鈕。這些工具對於構建能夠在未知數據上表現良好的 GLM 至關重要——這正是精算師必備的能力!