【十大經典數據挖掘算法】AdaBoost


【十大經典數據挖掘算法】系列

  1. C4.5
  2. K-Means
  3. SVM
  4. Apriori
  5. EM
  6. PageRank
  7. AdaBoost
  8. kNN
  9. Naïve Bayes
  10. CART

1. 集成學習

集成學習(ensemble learning)通過組合多個基分類器(base classifier)來完成學習任務,頗有點“三個臭皮匠頂個諸葛亮”的意味。基分類器一般采用的是弱可學習(weakly learnable)分類器,通過集成學習,組合成一個強可學習(strongly learnable)分類器。所謂弱可學習,是指學習的正確率僅略優於隨機猜測的多項式學習算法;強可學習指正確率較高的多項式學習算法。集成學習的泛化能力一般比單一的基分類器要好,這是因為大部分基分類器都分類錯誤的概率遠低於單一基分類器的。

偏差與方差

“偏差-方差分解”(bias variance decomposition)是用來解釋機器學習算法的泛化能力的一種重要工具。對於同一個算法,在不同訓練集上學得結果可能不同。對於訓練集\(D = \lbrace (x_1,y_1),(x_2,y_2), \cdots ,(x_N,y_N) \rbrace\),由於噪音,樣本\(x\)的真實類別為\(y_D\)(在訓練集中的類別為\(y\)),則噪聲為

\[\xi^2 = \mathbb{E}_D[(y_d-y)^2] \]

學習算法的期望預測為

\[\bar{f}(x) = \mathbb{E}_D[f(x;D)] \]

使用樣本數相同的不同訓練集所產生的方法

\[var(x) = \mathbb{E}_D[ \left ( f(x;D) - \bar{f}(x) \right )^2] \]

期望輸入與真實類別的差別稱為bias,則

\[bias^2(x) = \left( \bar{f}(x) - y \right)^2 \]

為便於討論,假定噪聲的期望為0,即\(\mathbb{E}_D[y_d-y] = 0\),通過多項式展開,可對算法的期望泛化誤差進行分解(詳細的推導參看[2]):

\[\begin{aligned} \mathbb{E}_D[\left (f(x;D) - y_D \right)^2] & = \mathbb{E}_D[\left (f(x;D) - \bar{f}(x) + \bar{f}(x) - y_D \right)^2] \cr & = \mathbb{E}_D[\left (f(x;D) - \bar{f}(x) \right)^2] + \left(\bar{f}(x) -y \right)^2 + \mathbb{E}_D[(y_D -y)^2] \cr & = bias^2(x) + var(x) + \xi^2 \end{aligned} \]

也就是說,誤差可以分解為3個部分:bias、variance、noise。bias度量了算法本身的擬合能力,刻畫模型的准確性;variance度量了數據擾動所造成的影響,刻畫模型的穩定性。為了取得較好的泛化能力,則需要充分擬合數據(bias小),並受數據擾動的影響小(variance小)。但是,bias與variance往往是不可兼得的:

  • 當訓練不足時,擬合能力不夠強,數據擾動不足以產生較大的影響,此時bias主導了泛化錯誤率;
  • 隨着訓練加深時,擬合能力隨之加強,數據擾動漸漸被學習到,variance主導了泛化錯誤率。

Bagging與Boosting

集成學習需要解決兩個問題:

  • 如何調整輸入訓練數據的概率分布及權值;
  • 如何訓練與組合基分類器。

從上述問題的角度出發,集成學習分為兩類流派:Bagging與Boosting。Bagging(Bootstrap Aggregating)對訓練數據擦用自助采樣(boostrap sampling),即有放回地采樣數據;每一次的采樣數據集訓練出一個基分類器,經過\(M\)次采樣得到\(M\)個基分類器,然后根據最大表決(majority vote)原則組合基分類器的分類結果。

Boosting的思路則是采用重賦權(re-weighting)法迭代地訓練基分類器,即對每一輪的訓練數據樣本賦予一個權重,並且每一輪樣本的權值分布依賴上一輪的分類結果;基分類器之間采用序列式的線性加權方式進行組合。

從“偏差-方差分解”的角度看,Bagging關注於降低variance,而Boosting則是降低bias;Boosting的基分類器是強相關的,並不能顯著降低variance。Bagging與Boosting有分屬於自己流派的兩大殺器:Random Forests(RF)和Gradient Boosting Decision Tree(GBDT)。本文所要講的AdaBoost屬於Boosting流派。

2. AdaBoost算法

AdaBoost是由Freund與Schapire [1] 提出來解決二分類問題\(y \in \lbrace 0,1 \rbrace\),其定義損失函數為指數損失函數:

\begin{equation}
L(y, f(x)) = exp(-yf(x)) \label{eq:loss}
\end{equation}

根據加型模型(additive model),第\(m\)輪的分類函數

\[f_m(x) = f_{m-1}(x) + \alpha_mG_m(x) \]

其中,\(\alpha_m\)為基分類器\(G_m(x)\)的組合系數。AdaBoost采用前向分布(forward stagewise)這種貪心算法最小化損失函數\eqref{eq:loss},求解子模型的\(\alpha_m\)

\[\alpha_m = \frac{1}{2}\log \frac{1-e_m}{e_m} \]

其中,\(e_m\)\(G_m(x)\)的分類誤差率。第\(m+1\)輪的訓練數據集權值分布\(D_{m+1} = (w_{m+1,1}, \cdots, w_{m+1,i}, \cdots, w_{m+1,N})\)

\[w_{m+1,i} = \frac{w_{m,i}}{Z_m} exp(-\alpha_m y_i G_m(x_i)) \]

其中,\(Z_m\)為規范化因子

\[Z_m = \sum_{i=1}^{N} w_{m,i} * exp(-\alpha_m y_i G_m(x_i)) \]

則得到最終分類器

\[sign(f(x)) = sign\left( \sum_{m=1}^{M} \alpha_m G_m(x) \right) \]

\(\alpha_m\)\(e_m\)的單調遞減函數,特別地,當\(e_m \leq \frac{1}{2}\)時,\(\alpha_m \geq 0\);當\(e_m > \frac{1}{2}\)時,即基分類器不滿足弱可學習的條件(比隨機猜測好),則應該停止迭代。具體算法流程如下:

1 \(D_1(i) = 1/N\) % Initialize the weight distribution
2 for \(m = 1, \cdots, M\):
3   learn base classifier \(G_m(x)\);
4   if \(e_m > 0.5\) then break;
5  update \(\alpha_m\) and \(D_{m+1}\);
6 end for

在算法第4步,學習過程有可能停止,導致學習不充分而泛化能力較差。因此,可采用“重采樣”(re-sampling)避免訓練過程過早停止;即拋棄當前不滿足條件的基分類器,基於重新采樣的數據訓練分類器,從而獲得學習“重啟動”機會。

AdaBoost能夠自適應(addaptive)地調整樣本的權值分布,將分錯的樣本的權重設高、分對的樣本的權重設低;所以被稱為“Adaptive Boosting”。sklearn的AdaBoostClassifier實現了AdaBoost,默認的基分類器是能fit()帶權值樣本的DecisionTreeClassifier。

老師木在微博上提出了關於AdaBoost的三個問題:

1,adaboost不易過擬合的神話。2,adaboost人臉檢測器好用的本質原因,3,真的要求每個弱分類器准確率不低於50%

3. 參考資料

[1] Freund, Yoav, and Robert E. Schapire. "A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting." Journal of Computer and System Sciences 55.1 (1997): 119-139.
[2] 李航,《統計學習方法》.
[3] 周志華,《機器學習》.
[4] Pang-Ning Tan, Michael Steinbach, Vipin Kumar, Introduction to Data Mining.
[5] Ji Zhu, Classification.
[6] @龍星鏢局,機器學習刀光劍影之 屠龍刀.
[7] 過擬合, 為什么說bagging是減少variance,而boosting是減少bias?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM