整合學習

Blackteaxx發表於2024-05-13

參考

西瓜書 & 南瓜書
統計學習方法

Background

整合學習的基本原理是:透過構建並結合多個學習器,可以獲得比單個學習器更好的泛化效能。整合學習的核心思想是透過結合多個學習器的判斷,可以獲得比單個學習器更好的泛化效能。

在 PAC 學習框架中,如果存在一個多項式的學習演算法能夠學習一個概念,並且準確率很高,那麼就稱這樣一個概念是強可學習的;如果準確率比隨機猜測好,那麼就稱這樣一個概念是弱可學習的。Schapire 和 Freund 證明了弱可學習概念和強可學習概念是等價的,即一個概念是弱可學習的充分必要條件是這個概念是強可學習的

弱學習器可以是同質化的可以被叫做基學習),也可以是非同質化的(可以被叫做個體學習器)。

那麼如何根據弱學習器構建強學習器就是整合學習的任務。整合學習的方法主要有兩類:

  • Bagging:並行化的整合學習方法,透過對訓練資料集進行取樣,然後訓練多個弱學習器,最後透過投票的方式進行預測。
  • Boosting:序列化的序列化學習方法,透過對訓練資料集進行加權,然後訓練多個弱學習器,最後透過加權投票的方式進行預測。

要獲得好的整合,個體學習器應當 “好而不同”,即個體學習器應當有較高的 準確率,同時應當有較大的 多樣性


一個簡單的分析:考慮二分類問題\(y \in \{+1, -1 \}\), 所有基分類器的誤差為

\[P(h_i(x) \neq y) = \epsilon \]

假設整合透過 T 個學習器絕對多數投票法確定,即

\[F(x) = sign(\sum_{i=1}^{T} h_i(x)) \]

假設基分類器錯誤率相互獨立,那麼根據 Hoeffding 不等式,整合分類器的錯誤率為

\[P(F(x) \neq y) = \sum_{k=0}^{\lfloor \frac{T}{2} \rfloor} C_T^k (1-\epsilon)^k \epsilon^{T-k} \leq \exp(-\frac{1}{2} T (1-2\epsilon)^2) \]

上述第一個等式是由於當 \(k > \lfloor \frac{T}{2} \rfloor\) 時,\(k\) 個分類器錯誤,整合分類器無法正確分類。

由上述不等式可知

  1. 隨著個體分類器數目的增加,整合分類器的錯誤率會指數級下降
  2. \(\epsilon = 0.5\)的分類器是無用的,但是\(\epsilon \leq 0.5\)的分類器是有用的,\(\epsilon \geq 0.5\)也是有用的。

Boosting-AdaBoost

對整合模型採用加性模型(additive model)的形式,即

\[H(x) = \sum_{t=1}^{T} \alpha_t h_t(x) \]

演算法流程

  1. 初始化訓練資料的權值分佈,對於訓練資料集\(D\),每個樣本的權值為\(D_0(i) = \frac{1}{N}\),其中\(N\)為樣本數目。

  2. 對於 \(t = 1, 2, \cdots, T\):

    1. 使用權值分佈\(D_t\)的訓練資料集學習得到基分類器\(h_t(x)\)
    2. 計算\(h_t(x)\)在訓練資料集上的分類誤差率
      \(\epsilon_t = P(h_t(x) \neq y) = \sum_i D_t(i)\mathbb{I}(h_t(x_i) \neq y_i)\)
    3. 計算\(h_t(x)\)的係數\(\alpha_t = \frac{1}{2} \log \frac{1-\epsilon_t}{\epsilon_t}\)
    4. 更新訓練資料集的權值分佈

      \[D_{t+1} = \frac{D_t(i) \exp(-\alpha_t y_i h_t(x_i))}{Z_t} \]

      其中\(Z_t\)是規範化因子,使得\(D_{t+1}\)成為一個機率分佈。
  3. 構建基分類器的線性組合

    \[f(x) = \sum_{t=1}^{T} \alpha_t h_t(x) \]

  4. 得到最終分類器

    \[h(x) = sign(f(x)) = sign(\sum_{t=1}^{T} \alpha_t h_t(x)) \]

演算法分析

  1. 係數\(\alpha_t\)表示了基分類器\(h_t(x)\)的重要性,當\(\epsilon_t\)越小,\(\alpha_t\)越大,即分類誤差率越小的基分類器在最終分類器中的作用越大。
  2. 權值分佈\(D_t\)表示了不同樣本在不同基分類器中的重要性,分類錯誤的樣本在下一輪中的權值越大,即

    \[D_{t+1}(i) = \begin{cases} \frac{D_t(i) \exp(-\alpha_t)}{Z_t} & h_t(x_i) = y_i \\ \frac{D_t(i) \exp(\alpha_t)}{Z_t} & h_t(x_i) \neq y_i \end{cases} \]

前向分佈演算法

考慮 additive model 的形式:

\[H(x) = \sum_{t=1}^{T} \alpha_t h_t(x;\gamma_t) \]

其中所有的\(\alpha_t\)\(\gamma_t\)都需要學習,非常困難,因此考慮前向分步演算法,即每次只學習一個基分類器\(h_t(x)\),並且學習\(\alpha_t\)

\[H_t(x) = H_{t-1}(x) + \alpha_t h_t(x) \]

只需要最佳化

\[(\alpha_t, h_t) = \arg \min_{\alpha, h} \sum_{i=1}^{N} \mathcal{L}(y_i, H_{t-1}(x_i) + \alpha h(x_i)) \]

得到\(\alpha_t\)\(h_t(x)\)後,更新\(H_t(x) = H_{t-1}(x) + \alpha_t h_t(x)\)

前向分佈演算法與 AdaBoost

AdaBoost 是前向分佈演算法的一個特例,AdaBoost 的損失函式為指數損失函式

Proof Start

Step 1: 化簡損失函式

考慮指數損失函式

\[\mathcal{L}(y, f(x)) = \exp(-yf(x)) \]

那麼定義在 additive model 上的損失函式即為

\[\mathcal{L}(y, H(x)) = \mathbb{E}_{D}[exp(-yH(x))] = \\ \mathbb{E}_{D}[exp(-y(H_{t-1}(x) + \alpha_t h_t(x)))] = \\ \sum_i^N D(i) \exp(-y_i(H_{t-1}(x_i) + \alpha_t h_t(x_i))) = \\ \sum_i^N D(i) \exp(-y_iH_{t-1}(x_i)) \exp(-\alpha_t y_i h_t(x_i)) \]

我們具體考慮\(\exp(-\alpha_t y_i h_t(x_i))\),當\(h_t(x_i) = y_i\)時,\(\exp(-\alpha_t y_i h_t(x_i)) = \exp(-\alpha_t)\),當\(h_t(x_i) \neq y_i\)時,\(\exp(-\alpha_t y_i h_t(x_i)) = \exp(\alpha_t)\),因此

\[\exp(-\alpha_t y_i h_t(x_i)) = \begin{cases} \exp(-\alpha_t) & h_t(x_i) = y_i \\ \exp(\alpha_t) & h_t(x_i) \neq y_i \end{cases} \]

於是

\[\exp(-\alpha_t y_i h_t(x_i)) = \exp(-\alpha_t) \mathbb{I}(h_t(x_i) = y_i) + \exp(\alpha_t) \mathbb{I}(h_t(x_i) \neq y_i) = \\ \exp(-\alpha_t) (1 - \mathbb{I}(h_t(x_i) \neq y_i)) + \exp(\alpha_t) \mathbb{I}(h_t(x_i) \neq y_i) = \\ \exp(-\alpha_t) + (\exp(\alpha_t) - \exp(-\alpha_t)) \mathbb{I}(h_t(x_i) \neq y_i) \]

那麼損失函式可以寫成

\[\sum_i^N D(i) \exp(-y_iH_{t-1}(x_i)) \exp(-\alpha_t y_i h_t(x_i)) = \\ \sum_i^N D(i) \exp(-y_iH_{t-1}(x_i)) \exp(-\alpha_t) + (\exp(\alpha_t) - \exp(-\alpha_t)) \mathbb{I}(h_t(x_i) \neq y_i) \]

Step 2:定義新的權值分佈

由於\(D(i) \exp(-y_iH_{t-1}(x_i))\)\(h_t(x), \alpha_t\)無關,因此我們 denote

\[\hat{D}_t(i) = D(i) \exp(-y_iH_{t-1}(x_i)) \]

那麼損失函式可以寫成

\[\sum_i^N D_t(i) \exp(-y_iH_{t-1}(x_i)) \exp(-\alpha_t) + (\exp(\alpha_t) - \exp(-\alpha_t)) \mathbb{I}(h_t(x_i) \neq y_i) = \\ \sum_i^N \hat{D}_t(i) ( \exp(-\alpha_t) + (\exp(\alpha_t) - \exp(-\alpha_t)) \mathbb{I}(h_t(x_i) \neq y_i) ) \]

Step 3:求解最優的\(h_t(x)\)\(\alpha_t\)

我們分別對\(h_t(x)\)\(\alpha_t\)進行最佳化,對於\(h_t(x)\),我們可以得到

\[h_t(x) = \arg \min_{h} \sum_i^N \hat{D}_t(i) (\exp(\alpha_t) - \exp(-\alpha_t)) \mathbb{I}(h(x_i) \neq y_i) \]

假設\(\exp(\alpha_t) - \exp(-\alpha_t) \geq 0\), 上述最佳化問題等價於

\[h_t(x) = \arg \min_{h} \sum_i^N \hat{D}_t(i) \mathbb{I}(h(x_i) \neq y_i) = \\ \arg \min_{h} \mathbb{E}_{\hat{D}}[\mathbb{I}(h(x_i) \neq y_i)] = \\ \arg \min_{h} \epsilon_t \]

第二個等號由於\(D_t\)\(\hat{D}_t\)只差一個歸一化因子,因此等價。

\(h_t(x)\)是在\(\hat{D}_t\)上的最小分類誤差率的基分類器,

對於\(\alpha_t\),我們使用偏導數可以得到

\[\frac{\partial \mathcal{L}}{\partial \alpha} = - \exp(-\alpha) \sum_i^N \hat{D}_t(i) + \\ (\exp(\alpha_t) + \exp(-\alpha_t)) \sum_i^N \hat{D}_t(i) \mathbb{I}(h(x_i) \neq y_i) = 0 \]

化簡得

\[\frac{ \exp(-\alpha)}{\exp(\alpha_t) + \exp(-\alpha_t)} = \\ \frac{\sum_i^N \hat{D}_t(i) \mathbb{I}(h(x_i) \neq y_i)}{\sum_i^N \hat{D}_t(i)} = \\ \sum_i^N D_t(i) \mathbb{I}(h(x_i) \neq y_i) = \\ \epsilon_t \]

那麼最終得到

\[\alpha_t = \frac{1}{2} \log \frac{1-\epsilon_t}{\epsilon_t} \]

Proof End

Summary:透過指數損失函式與前向分佈演算法,我們可以得到 AdaBoost 的演算法流程。

Boosting-提升樹與 GDBT

更一般的整合損失函式形式為

\[\mathcal{L}(H) = \mathbb{E}_D [\mathcal{l}(y, H(x))] \]

我們透過\(H_{t-1}\)的損失函式值來求\(H_t\)的損失函式值,使用 Talyor Series,即

\[l(y, H_t(x)) = l(y, H_{t-1}(x)) + \frac{\partial l(y, H(x))}{\partial H(x)} \bigg|_{H(x) = H_{t-1}(x)}(H_t(x) - H_{t-1}(x)) \]

損失函式可以被化簡為

\[\mathbb{E}_D [\mathcal{l}(y, H(x))] = \\ \mathbb{E}_D [\mathcal{l}(y, H_{t-1}(x))] + \underbrace{ \mathbb{E}_D [\frac{\partial \mathcal{l}(y, H(x))}{\partial H(x)} \bigg|_{H(x) = H_{t-1}(x)} \alpha h(x)] }_{\text{Residual}} \]

於是,我們可以得到最佳化問題

\[(\alpha_t, h_t) = \arg \min_{\alpha, h} \mathbb{E}_D [\frac{\partial \mathcal{l}(y, H(x))}{\partial H(x)} \bigg|_{H(x) = H_{t-1}(x)} \alpha h(x)] \]

Boosting 總結

在前向分佈求解的過程中,實際上可以一定程度的看作是一個殘差逼近的過程,即每次學習一個基分類器\(h_t(x)\),使得當前模型\(H_{t-1}(x)\)殘差最小

Boosting 使用對樣本重新賦權的方式,使得分類錯誤的樣本在下一輪中的權值更大,從而使得基分類器更加關注分類錯誤的樣本,對不能處理權重的 learner,可以透過對樣本重取樣的方式來實現。

從偏差-方差分解的角度來看,Boosting 透過減小偏差的方式來提高模型的泛化效能。

Bagging

雖然整合學習中的學習器獨立性很難保證,但是可以透過其他手段保持學習器的多樣性,Bagging 就是一種透過對訓練資料集進行取樣的方式來保持學習器的多樣性。

使用 Bootrap Sampling 的方式,即對訓練資料集進行有放回的取樣,得到\(T\)個新的訓練資料集。隨後並行訓練\(T\)個基分類器,最後透過投票/平均的方式進行預測。

Bootstrap Sampling 保證了每個基分類器的訓練資料集是不同的,從而保證了基分類器的多樣性。同時,也能保證有\(\frac{1}{e}\)的樣本沒有被取樣到,這部分樣本可以用作驗證集對泛化誤差進行“包外估計”

\[\lim \limits_{N \to \infty} (1 - \frac{1}{N})^N = \frac{1}{e} \]

定義\(D_t\)\(h_t\)的訓練集,\(H^{\text{oob}}(x)\)為對樣本\(x\)的包外預測,僅考慮那些未使用\(x\)的基分類器\(h_t\),那麼

\[H^{\text{oob}}(x) = \arg \max_y \sum_{t=1}^T \mathbb{I}(h_t(x) = y) \mathbb{I}(x \notin D_t) \]

Bagging 的泛化誤差的包外估計可以定義為

\[\epsilon^{\text{oob}} = \mathbb{E}_D [\mathbb{I}(H^{\text{oob}}(x) \neq y)] \]

Bagging 更加註重減小方差

Bagging-Random Forest

Random Forest 是 Bagging 的一個擴充套件,透過對特徵進行隨機取樣(列取樣),使得每個基分類器的訓練資料集不僅在樣本(行取樣)上不同,而且在特徵上也不同。

相關文章