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