---
# System prepended metadata

title: 'ch4, 5相關'

---

### **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)