### **1. ROC如何建構,為什麼隨機猜會形成一條斜線?**
**核心概念**:ROC 曲線是透過比較**真陽性率 (True Positive Rate, TPR)** 與**偽陽性率 (False Positive Rate, FPR)** 來評估分類模型的效能。一條從左下角到右上角的 45 度對角線,代表的是一個**完全隨機猜測**的模型,其 AUC (曲線下面積) 值為 0.5。
* **真陽性率 (TPR)** = $\frac{TP}{TP + FN}$ (在所有真正的正樣本中,被模型正確預測為正的比例)
* **偽陽性率 (FPR)** = $\frac{FP}{FP + TN}$ (在所有真正的負樣本中,被模型錯誤預測為正的比例)
**隨機猜測的原理如下**:
一個隨機的模型,對於任何一個樣本,它都沒有能力去區分該樣本是正還是負。假設這個隨機模型以一個固定的機率 $p$ 來將樣本猜測為「正類別」。
1. 在所有「真正為正」的樣本中,它會猜對 $p$ 的比例,因此 **TPR = $p$**。
2. 在所有「真正為負」的樣本中,它同樣會猜錯 $p$ 的比例(即把負的猜成正的),因此 **FPR = $p$**。
這意味著,對於一個隨機模型,**無論你如何設定它的猜測機率 $p$(这在 ROC 曲線中相當於移動決策閾值),它的 TPR 和 FPR 始終是相等的**。
當我們將所有可能的閾值(對應不同的猜測機率 $p$)繪製在圖上時,由於 TPR $\approx$ FPR,這就形成了一條 $y=x$ 的直線,也就是我們看到的那條 45 度對角線。這條線的 AUC 值是 0.5,代表模型不具備任何預測能力。一個好的模型,其 ROC 曲線會盡量向左上方凸出,使得 AUC 值接近 1。
> 更多資訊可參考[這裡](https://datascience.stackexchange.com/questions/31872/auc-roc-of-a-random-classifier/31877#31877)
---
### **2. GLM 中該如何選擇 Y|X 或 LINK FUNCTION?**
在廣義線性模型 (Generalized Linear Models, GLM) 中,選擇適當的機率分佈 (Y|X) 和連結函數 (Link Function) 是建立有效模型的關鍵。
**第一步:根據應變數 Y 的特性選擇機率分佈 (Random Component)**
選擇哪種分佈取決於你應變數的資料型態與特性:
| Y 的特性 | 建議的機率分佈 | 常見應用 |
| :--- | :--- | :--- |
| **連續且對稱** (可正可負) | **常態分佈 (Normal/Gaussian)** | 標準的線性迴歸 |
| **二元結果** (0/1, 成功/失敗) | **白努力分佈 (Bernoulli)** | 羅吉斯迴歸 (Logistic Regression) |
| **計數資料** (非負整數, 0, 1, 2, ...) | **卜瓦松分佈 (Poisson)** | 事件發生次數預測 (如:一小時內顧客數) |
| **計數資料 (變異數 > 平均數)** | **負二項分佈 (Negative Binomial)** | 當卜瓦松分佈的假設不成立 (過度離散) |
| **固定試驗次數中的成功次數** | **二項分佈 (Binomial)** | 實驗成功率 (如:投擲 10 次硬幣出現正面的次數) |
| **連續且恆正、偏態分佈** | **伽瑪分佈 (Gamma)** | 等待時間、保險理賠金額 |
**第二步:選擇連結函數 (Link Function)**
連結函數的作用是將應變數的期望值 $E(Y) = \mu$ 與解釋變數的線性組合 $X\beta$ 連結起來:$g(\mu) = X\beta$。選擇的關鍵是**確保轉換後的值域能對應到線性組合的整個實數線 (-∞, +∞)**。
每個機率分佈都有一個**正則連結函數 (Canonical Link Function)**,這在數學上最為便利,通常也是預設和首選:其核心目標是**將應變數期望值 $\mu$ 的值域,合理地轉換(映射)到解釋變數線性組合 $\eta = X\beta$ 的值域 $(-\infty, \infty)$**。
-----
| 機率分佈 | $E(Y) = \mu$ 的值域 | 正則連結函數 | 函數形式 $g(\mu)$ | **選擇的理由** |
| :--- | :--- | :--- | :--- | :--- |
| **常態分佈** | $(-\infty, \infty)$ | **Identity** | $\mu$ | **值域完全相同,無需轉換**。<br>應變數的期望值 $\mu$ 和線性組合 $\eta$ 的值域都是整個實數線 $(-\infty, \infty)$,因此最直接的連結就是讓它們相等,即 $\mu = \eta$。 |
| **白努力/二項分佈** | $(0, 1)$ | **Logit** | $\ln(\frac{\mu}{1-\mu})$ | **將機率區間 (0, 1) 擴展至實數線**。<br>$\mu$ 代表機率,其值域被限制在 0 和 1 之間。Logit 函數(對數勝算 log-odds)能將這個有限區間完美地映射到 $(-\infty, \infty)$,確保模型預測出的機率值總是在合法的範圍內。 |
| **卜瓦松分佈** | $(0, \infty)$ | **Log** | $\ln(\mu)$ | **將正數區間 (0, ∞) 擴展至實數線**。<br>$\mu$ 代表計數的平均值,必須是正數。對數函數 $\ln(\mu)$ 能將所有正數映射到 $(-\infty, \infty)$。反過來說,這也保證了模型預測出的平均值 $\mu = e^\eta$ 永遠為正。 |
| **伽瑪分佈** | $(0, \infty)$ | **Inverse** | $1/\mu$ | **確保平均值為正,並基於數學結構**。<br>$\mu$ 代表一個恆正的連續變數的平均值。倒數函數 $1/\mu$ 是從伽瑪分佈的指數族形式推導出的正則連結。它能確保預測的平均值 $\mu = 1/\eta$ 恆為正,但這同時也要求 $\eta$ 必須為正。(*註:實務上,**Log link** 更常用於伽瑪分佈,因其更靈活且易於解釋*) |
> **總結流程**:
> 1. **先看 Y 的特性**:是連續、計數、還是二元?這決定了你的機率分佈家族。
> 2. **再選連結函數**:通常直接使用該分佈對應的正則連結函數。如果模型擬合不佳或有特殊理論依據,可以嘗試其他連結函數(例如,對於二元結果,除了 Logit,也可以使用 Probit 或 Cloglog)。
---
### **3. Cross validation 方法中為什麼要切分為 training, validation 和 test set?**
將資料集切分為訓練集、驗證集和測試集,是為了**公平地評估模型的泛化能力 (Generalization Ability)** 並**避免資訊洩漏 (Information Leakage)**。
1. **訓練集 (Training Set)**
* **用途**:用來「訓練」模型,也就是讓演算法從這些資料中學習模式並決定模型的參數(例如,線性迴歸中的係數 $\beta$)。
* **目的**:建立模型。
2. **驗證集 (Validation Set)**
* **用途**:用來「調整」模型的**超參數 (Hyperparameters)**。超參數是模型訓練前就需要設定的參數,例如決策樹的深度、正規化懲罰項的大小 ($\lambda$)、或 K-NN 中的 K 值。我們會用訓練集訓練多個不同超參數的模型,然後在驗證集上比較它們的表現,選擇表現最好的一組超參數。
* **目的**:模型選擇與超參數調校。
3. **測試集 (Test Set)**
* **用途**:在模型訓練和超參數調整都完成後,用來對「最終選定」的模型進行**一次性的、最終的效能評估**。
* **目的**:提供模型在真實世界中對「全新、從未見過」的資料表現的**無偏估計**。
**為什麼三者缺一不可?**
* **若沒有驗證集**:你會直接用測試集來調整超參數。這樣一來,你的模型和超參數會不知不覺地對這個「特定的」測試集過度擬合。當你宣稱你的模型在測試集上有 95% 準確率時,這個數字是過度樂觀的,因為模型已經「偷看」過測試集的資訊了。
* **若沒有測試集**:你會用驗證集來選出最好的模型,但你無法知道這個「最好」的表現在面對全新資料時是否依然穩健。驗證集上的效能可能因為多次調校而產生了偏差。
> **總結**:這個流程模擬了真實世界的應用情境。你用 **training set** 學習,用 **validation set** 進行期中考來調整學習策略,最後用 **test set** 這場真正的聯考來檢驗你的最終實力。測試集的分數才是你對外宣稱的、最可信的成績。
---
### **4. 為什麼 LOOCV variance 會比較大?**
這個問題涉及機器學習中一個經典的權衡:**偏差-變異數權衡 (Bias-Variance Tradeoff)**。
**LOOCV (Leave-One-Out Cross-Validation)** 是一種 k-fold 交叉驗證的極端形式,其中 k 等于樣本數 n。
* **偏差 (Bias) 很低**
在 LOOCV 的每一次迭代中,我們都使用 $n-1$ 個樣本來訓練模型。這個訓練集的大小幾乎與原始的完整資料集 ($n$ 個樣本) 完全相同。因此,在每次迭代中訓練出來的模型,都與使用完整資料集訓練出的最終模型非常相似。這意味著,LOOCV 對模型效能的**估計是高度無偏的 (low bias)**,它非常接近模型在「這份特定資料上」的真實表現。
* **變異數 (Variance) 很大**
變異數大的根本原因在於**每一次迭代所使用的訓練集高度相關 (Highly Correlated)**,這導致最終的效能評估值對初始資料的隨機性**極度敏感**。
1. **高度重疊的訓練集**:考慮第 1 次迭代,訓練集是 {樣本2, 3, ..., n};第 2 次迭代,訓練集是 {樣本1, 3, ..., n}。這兩個訓練集僅相差一個樣本,相似度極高。
2. **高度相關的評估結果**:在這些高度相似的訓練集上訓練出的模型,其性能表現也會非常相似。因此,我們得到的 $n$ 個效能評估值(例如 $n$ 個均方誤差)並不是獨立的,而是高度正相關的。
3. **平均相關變數的後果**:當我們將這 $n$ 個高度相關的數值平均起來時,它們各自帶有的隨機誤差無法像獨立變數那樣互相抵銷。如果我們手上這份 $n$ 筆的樣本恰好比較「簡單」,那麼 $n$ 次評估結果都會一致地偏向樂觀;反之,如果樣本比較「棘手」,結果則會一致地偏向悲觀。
4. **什麼是高變異數? **:高變異數體現在**「如果我們用一份全新的資料重跑一次,結果會如何?」** 。因為 LOOCV 的評估結果被當前樣本「綁架」了,如果我們從母體中重新抽取另一份 $n$ 筆的資料,得到的評估結果可能會與前一次大相逕庭。**這種在不同資料集之間劇烈擺盪、不穩定的特性,就是高變異數的本質。**
因此,雖然 LOOCV 提供了對模型效能的無偏估計,但這個**估計本身是不穩定的(高變異數)**。相比之下,5-fold 或 10-fold 交叉驗證透過建立差異較大的訓練集,降低了評估結果間的相關性,從而在偏差和變異數之間取得了更好的平衡,是更穩健的選擇。
> 更多資訊可參考[這裡](https://stats.stackexchange.com/questions/61783/bias-and-variance-in-leave-one-out-vs-k-fold-cross-validation?noredirect=1&lq=1)