---
# System prepended metadata

title: 'ch5, ch6相關'

---

### **1. 為什麼前處理要在訓練集上學習參數並用在測試集上?**

**核心原則：為了模擬真實世界的預測情境，並得到一個對模型泛化能力（Generalization Ability）誠實、無偏的評估。**

這個流程的唯一目的，就是嚴格防止**資訊洩漏 (Data Leakage)**。

可以將整個機器學習模型的建構過程，視為一場模擬考：

* **訓練集**：是你的課本與習題，所有知識和解題技巧都必須從這裡學習。
* **測試集**：是那場你從未見過的期末大考，用來檢驗你真正的實力。

如果在準備考試時，你以任何形式偷看到了考題（即在訓練過程中接觸到測試集的資訊），那麼你在這場考試得到的分數就失去了意義，因為它無法反映你面對全新問題時的真實能力。

**以標準化 (Standardization) 為例**

標準化需要計算特徵的平均值 ($\mu$) 和標準差 ($\sigma$)。

* **一個【錯誤】的做法：使用整個資料集來學習參數**
    1.  拿 **整個資料集（包含訓練與測試資料）** 計算出一個全域的 $\mu_{all}$ 和 $\sigma_{all}$。
    2.  用這組 $\mu_{all}$ 和 $\sigma_{all}$ 去轉換 (transform) 整個資料集。
    3.  再將資料切分為訓練集與測試集。
    * **問題**：這個操作讓模型在訓練開始前，就透過 $\mu_{all}$ 和 $\sigma_{all}$ **提前吸收了測試集的數據分佈資訊**。這是一種嚴重的資訊洩漏，會導致模型評估結果過於樂觀且完全不可信。

* **唯一正確的做法：Fit on Train, Transform on All**
    1.  **第一步：劃分資料**。在所有操作開始前，就將資料集嚴格地劃分為訓練集和測試集。此後，測試集在模型最終評估前都不能再被「窺探」。
    2.  **第二步：在訓練集上學習 (Fit)**。**只使用訓練集**來計算前處理所需的參數。例如，計算出 $\mu_{train}$ 和 $\sigma_{train}$。這一步等於是定義了一套「轉換規則」。
    3.  **第三步：應用於所有資料 (Transform)**。
        * 將這套「轉換規則」（即 $\mu_{train}$ 和 $\sigma_{train}$）應用於**訓練集**。
        * 將**完全相同的**「轉換規則」應用於**測試集**（以及驗證集）。

    * **理由**：這精準地模擬了模型上線後的真實情境。在現實中，你的模型只能根據它從歷史資料（訓練集）中學到的規則去處理未來的、全新的資料（測試集）。你永遠無法預知未來資料的分佈，因此也絕不能用它們來定義你的處理規則。

> **注意**：任何帶有「學習」性質的步驟——無論是模型參數的訓練，還是前處理轉換器 (Scaler, Encoder, PCA) 的擬合 (fit)——都**只能在訓練集上進行**。測試集的功能只有一個：在所有流程都確定後，提供一次性的、最終的、誠實的效能評估。

---

### **2. 訓練集、驗證集、測試集的定義**

1.  **訓練集 (Training Set)**
    * **用途**：模型的學習與建立。演算法會分析訓練集中的資料，學習特徵與目標之間的關係，並決定模型的內部參數（例如線性迴歸的係數 $\beta$）。這是模型的主要學習材料。
    * **好比**：學生上課學習的課本和習題。

2.  **驗證集 (Validation Set)**
    * **用途**：模型選擇與超參數調校。當我們有多個模型架構或多組超參數（例如：正規化強度 $\lambda$、K-NN 的 K 值）需要選擇時，我們會讓這些模型在驗證集上進行「模擬考」，選擇表現最好的那一個。
    * **好比**：模擬考或期中考，用來檢討學習策略和調整讀書方法，但成績不計入最終總分。

3.  **測試集 (Test Set)**
    * **用途**：對最終選定的模型進行一次性的、無偏的效能評估。這份資料集在整個模型開發過程中都不能被使用，直到你已經確定了最終的模型及其超參數。它代表了模型在真實世界中會遇到的全新資料。
    * **好比**：大學聯考或最終的期末大考。分數是對你整個學習成果的最終、客觀的評價。

**核心目標**：這個劃分是為了**公平地評估模型的泛化能力**。如果使用測試集來調校模型，模型就會不知不覺地為這份特定的測試集進行「客製化」，導致其報告的效能過於樂觀，無法代表它在真實世界中的表現。


### **3. Bootstrap為什麼要取樣後再放回**

**核心概念：Bootstrap 的精神是將我們手上唯一的樣本，視為對真實母體的「高解析度藍圖」。我們的目標是從這張藍圖中反覆抽樣，以模擬從真實母體抽樣的情境。而「取後放回」是唯一能確保這個模擬過程在統計上有效的方法。**

這個方法的基石，建立在一個關鍵假設之上：我們手上的原始樣本本身，是來自母體的 n 次**獨立同分佈 (Independent and Identically Distributed, i.i.d.)** 抽樣結果。因此，我們的重抽樣過程，也必須嚴格遵守 i.i.d. 原則。

**為何「取後放回」是唯一選擇？**

這個問題可以從 i.i.d. 的兩個組成部分來理解：

**1. 維持「同分佈 (Identically Distributed)」**
* **真實情境**：從一個極大的母體中抽樣，每抽出一個樣本，幾乎不會改變母體本身的數據分佈。
* **取後放回**：當我們從樣本（我們的「藍圖」）中抽出一筆資料後**立即將其放回**，我們保證了下一次抽樣時所面對的「藍圖」和第一次是完全一樣的。所有觀測值被抽中的機率始終保持在 $1/n$。這確保了每一次抽樣都來自**相同的分佈**。
* **不放回**：若抽樣後不放回，那麼第二次抽樣的「藍圖」就只剩下 n-1 筆資料，其數據分佈也已被人為改變。這就違反了「同分佈」的原則。

**2. 維持「獨立性 (Independence)」**
* **真實情境**：在極大的母體中，前一次的抽樣結果不會影響下一次的抽樣機率。
* **取後放回**：由於每次抽樣的「藍圖」都保持不變，因此每一次抽樣的結果，都不會受到前一次抽樣結果的影響。這完美地模擬了抽樣的**獨立性**。
* **不放回**：若不放回，第二次抽樣的結果明確地**依賴於**第一次的結果（因為第一次被抽出的那個值不可能再出現）。這直接摧毀了抽樣的獨立性。

雖然「不放回」抽樣（稱為子抽樣, Subsampling）也能產生變異性，但它模擬的是一個完全不同的、非 i.i.d. 的過程。它所產生的變異性，無法正確地用來估計原始統計量的抽樣分佈。

> **總結**：Bootstrap 的靈魂在於**忠實地模擬 i.i.d. 抽樣過程**。在一個大小固定的樣本上，「取後放回」是**唯一**能同時確保每次抽樣都**獨立**於其他抽樣、且都來自**相同分佈**的機制。若不放回，則整個模擬的理論基礎便會崩塌，得到的結果也就不再是我們所要的抽樣分佈的有效估計。因此，「取後放回」並非僅僅為了產生變異，而是為了以**統計上正確的方式**來產生這種變異。


---

### **4. 為什麼subset slection要分成兩階段?**

模型選擇的完整流程包含兩個核心階段：

**第一階段：搜尋並產生候選模型集合 (Search and Generate Candidate Models)**

* **目標**：從所有可能的特徵組合中，找出在「不同複雜度下」表現最好的模型。
* **挑戰**：如果一個資料集有 $p$ 個特徵，那麼總共會有 $2^p$ 種可能的特徵子集。當 $p$ 很大時（例如 $p=40$），這個數字會變成天文數字，無法一一檢視。
* **方法**：
    1.  **最佳子集選擇 (Best Subset)**：暴力搜尋。對於每種可能的特徵數量 $k$（從 1 到 $p$），找出包含 $k$ 個特徵的所有模型中，擬合最好（例如，殘差平方和 RSS 最小）的那一個。
    2.  **逐步選擇 (Stepwise Selection)**：貪婪演算法。
        * **向前 (Forward)**：從空模型開始，每次增加一個對模型改善最大的特徵。
        * **向後 (Backward)**：從包含所有特徵的模型開始，每次移除一個對模型影響最小的特徵。
* **產出**：這個階段的產出不是「一個」最終模型，而是一個**模型序列**。例如，使用最佳子集選擇後，你會得到 $p$ 個模型：$M_1$（最佳的 1 特徵模型）、$M_2$（最佳的 2 特徵模型）、...、$M_p$（包含所有特徵的模型）。

**第二階段：根據評估指標選擇最終模型 (Select the Final Model Using a Criterion)**

* **目標**：從第一階段產生的候選模型序列中，選出一個能夠在「預測新資料」時表現最好的模型。
* **挑戰**：在第一階段，包含越多特徵的模型，其在訓練資料上的擬合程度（如 RSS）一定會越好。但這會導致過擬合 (Overfitting)。我們需要一個標準來平衡**模型的擬合度**與**模型的複雜度**。
* **方法**：使用一些懲罰複雜度的指標，或是直接估計測試誤差。
    1.  **調整 $R^2$、Cp、AIC、BIC**：這些指標都在衡量擬合度的同時，對模型的特徵數量（複雜度）進行懲罰。我們選擇使這些指標最佳化（例如，Cp、AIC、BIC 最小）的模型。
    2.  **交叉驗證 (Cross-Validation)**：直接估計每個候選模型的測試誤差，選擇誤差最小的模型。
* **產出**：一個**最終選定**的模型。

> **總結**：這兩階段缺一不可。第一階段是**廣泛撒網**，找出在各個複雜度層級的「冠軍選手」。第二階段則是**最終決選**，從這些冠軍選手中，根據一個公平的標準（預測能力），挑選出總冠軍。

---

### **5. Best subset selection, Forward stepwise selection 和 Backward stepwise selection的比較和優劣勢是什麼?**

| 特性 | **最佳子集選擇 (Best Subset)** | **向前逐步選擇 (Forward Stepwise)** | **向後逐步選擇 (Backward Stepwise)** |
| :--- | :--- | :--- | :--- |
| **搜尋策略** | **窮舉法**：檢視所有 $2^p$ 個可能的模型組合，找出每個子集大小 $k$ 的最佳模型。 | **貪婪的「加法」**：從空模型開始，每一次都加入一個能最大程度提升模型表現的變數。 | **貪婪的「減法」**：從飽和模型（所有變數）開始，每一次都移除一個對模型表現影響最小的變數。 |
| **優勢** | **保證找到最佳解**：在給定的特徵數量 $k$ 下，它找到的模型一定是 RSS 最小、擬合最好的模型。是理論上的黃金標準。 | **計算效率高**：只需考慮約 $p(p+1)/2$ 個模型，速度遠快於 Best Subset。<br>**可用於 p \> n 的情況**。 | **能處理協同效應 (Synergy Effect)**：從飽和模型出發，能評估變數在其他變數**共同存在**時的重要性。因此，不易錯過那些單獨看效果不佳，但與其他變數組合後有強大預測力的變數。<br>**計算效率高**，與 Forward 相似。 |
| **劣勢** | **計算成本極高**：當特徵數 $p$ 稍大（如 \> 40），計算量就會變得不可行。<br>**統計上易過擬合**：因為搜尋空間太大，更容易找到在訓練集上看似完美但在測試集上表現差的模型。 | **無法保證找到最佳解**：貪婪的本質**可能錯過協同效應**。例如，單獨看 $X_1$ 和 $X_2$ 可能都不如 $X_3$ 好，導致演算法初期不會選入它們，進而錯失了 $X_1$ 和 $X_2$ 組合起來的強大預測力。 | **無法保證找到最佳解**：理由同 Forward，貪婪的本質仍可能移除錯誤的變數。<br>**不能用於 p \> n 的情況**，因為第一步的飽和模型無法被擬合。 |
| **適用情境** | $p$ 很小（通常 \< 40），且計算資源充足。 | $p$ 很大，甚至是 $p > n$ 的高維度資料，且相信變數間的協同效應不強。 | $p$ 不是太大，且 $n > p$。特別是在**懷疑變數間可能存在重要的交互作用或協同效應時**，此法通常優於 Forward Stepwise。 |

---

### **6. CP, AIC, BIC的設計目標和統計上性質是什麼?**

**Mallows' Cp**

**核心概念**：Cp 是一個用來估計線性迴歸模型**測試均方誤差 (Test MSE)** 的指標。它透過在訓練誤差 (RSS) 上加上一個與模型複雜度相關的懲罰項，來模擬模型在預測新資料時的表現。

* **公式**：$C_p = \frac{1}{n} (RSS + 2d\hat{\sigma}^2)$
    * $n$：樣本數
    * $RSS$：該模型在訓練資料上的殘差平方和 (Residual Sum of Squares)
    * $d$：模型中的參數個數（包含截距項）
    * $\hat{\sigma}^2$：對「飽和模型」（包含所有 $p$ 個特徵的模型）的誤差變異數 $\sigma^2$ 的估計值

**設計目標與統計性質**：
Cp 的目標是找到一個模型，其預測誤差的期望值最低。

1.  **無偏估計**：在線性模型假設下，Cp 值是測試均方誤差的一個**近似無偏估計**。
2.  **權衡**：公式中的 $RSS$ 會隨著 $d$ 的增加而減少（擬合度變好），但懲罰項 $2d\hat{\sigma}^2$ 會随之增加。Cp 旨在找到這兩者之間的最佳平衡點。
3.  **選擇標準**：我們通常會選擇 **Cp 值最小**的模型。

---

**AIC (Akaike Information Criterion)**

**核心概念**：AIC 是一個基於資訊理論的模型選擇標準。它旨在估計模型預測新資料時，所損失的資訊量（以 Kullback-Leibler 散度衡量）。選擇 AIC 最小的模型，就等於選擇那個**最接近真實資料生成過程**的模型。

* **公式**：$AIC = -2 \log(L) + 2d$
    * $L$：模型的最大概似函數值 (Maximized Likelihood)。代表模型對訓練資料的擬合程度。
    * $d$：模型中的參數個數。

**設計目標與統計性質**：
AIC 的目標是**預測準確性**，而非找到「真實」模型。

1.  **漸進效率 (Asymptotic Efficiency)**：如果真實的模型非常複雜（或不包含在我們的候選模型中），隨著樣本數的增加，AIC 有很高的機率會選出在所有候選模型中**預測能力最好**的那一個。
2.  **懲罰項**：懲罰項 $2d$ 完全取決於模型複雜度，與樣本數 $n$ 無關。
3.  **模型偏好**：相比 BIC，AIC 的懲罰較輕，因此在樣本數足夠大時，它**傾向於選擇稍微複雜一些的模型**。它更容忍模型中包含一些不那麼重要的變數，只要這些變數能帶來一絲預測能力的提升。
4.  **等價性**：對於常態誤差下的線性迴歸，AIC 和 Cp 是成比例的，選擇兩者作為標準會得到相同的模型。

---

**BIC (Bayesian Information Criterion)**

**核心概念**：BIC（或稱 SBC）源於貝氏統計思想。它的目標是在眾多候選模型中，選出**事後機率 (Posterior Probability) 最高**的那個模型，即在給定資料下，「最可能」是真實模型的那個。

* **公式**：$BIC = -2 \log(L) + d \log(n)$
    * $L$：模型的最大概似函數值。
    * $d$：模型中的參數個數。
    * $n$：樣本數。

**設計目標與統計性質**：
BIC 的目標是**找到真實模型**。

1.  **一致性 (Consistency)**：如果「真實模型」確實存在於我們的候選模型集合中，那麼當樣本數 $n$ 趨近於無限大時，BIC **選中這個真實模型的機率會趨近於 1**。
2.  **更重的懲罰**：BIC 的懲罰項 $d \log(n)$ 會隨著樣本數 $n$ 的增加而增加。只要 $n \ge 8$，$\log(n)$ 就會大於 2，意味著 BIC 對模型複雜度的懲罰比 AIC **更嚴厲**。
3.  **模型偏好**：由於其更重的懲罰，BIC **強烈傾向於選擇更簡潔 (Parsimonious) 的模型**。它會更果斷地剔除那些效果不顯著的變數，追求用最少的參數來解釋資料。