### **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) 的模型**。它會更果斷地剔除那些效果不顯著的變數,追求用最少的參數來解釋資料。