1. 程式人生 > >機器學習:整合學習(ensemble learning)(一)——原理概述

機器學習:整合學習(ensemble learning)(一)——原理概述

整合學習(ensemble learning)

整合學習通過構建多個個體學習器,然後再用某種策略將他們結合起來,產生一個有較好效果的強學習器來完成任務。基本原理如下圖所示。這裡主要有三個關鍵點:個體學習器的同質異質、個體學習器的生成方式、結合策略。

  • 同質異質。首先需要明確的是個體學習器至少不差於弱學習器。弱學習器常指泛化效能略優於隨機猜測的學習器,例如二分類問題中精度略高於50%的分類器。對於訓練資料若整合中的個體學習器為同一型別,例如都為BP神經網路或者都為決策樹,則稱同質整合。同樣的道理,若個體學習器型別不同,例如既有決策樹又有神經網路,則稱異質整合。
  • 個體學習器的生成方式。主要可以分為兩種,個體學習器之間存在強依賴關係、必須序列生成的序列化方法,以及個體學習器件不存在強依賴關係、可同時生成的並行化方法。前者代表是Boosting,後者代表是Bagging和隨機森林(Random Forest)。 1.Boosting基本原理如圖所示
    。大多數提升方法都是改變訓練資料的概率分佈(訓練資料的權值分佈),針對不同訓練資料分佈獲得不同個體學習器,最終組合。因此需要解決兩個問題,一是每一輪怎樣改變權值分佈的,二是如何將個體學習器進行組合的。Adaboost做法是,對於前者提高被前一輪預測錯誤樣本的的權重,降低預測正確樣本的的權重,對於後者加大誤差率小的個體學習器的權值,減小誤差率小的個體學習率的權值。Boosting演算法要求個體學習器能夠對特定的資料分佈進行學習,這可以通過“重賦權法”實施,即在訓練過程每一輪中,根據樣本分佈對每個樣本重新賦予權重。對於無法接受帶權樣本的個體學習器(演算法),可以通過“重取樣法”來處理,即在每一輪學習中,根據樣本分佈對訓練集重新取樣,再用重取樣得到的樣本集對個體學習器進行訓練。一般情況下兩者差別不大。需要注意的是每一輪訓練中需要檢查當前生成的學習器是否滿足基本條件,一旦不滿足,則被拋棄,並且學習停止,此時可能還遠遠沒有達到最大學習輪數,導致最終學習器效能欠佳。若採用“重取樣法”,則會“重啟動”,以避免過早停止。
    2.Bagging基本原理如圖所示。要想得到泛華性較強的整合,其中每個學習器應儘量獨立,在現實中無法做到,但可以設法使之差異較大。一種做法就是對訓練集取樣產生多個子集,對各個子集訓練學習器,從而得到差異較大的學習器。但是我們還希望個體學習器不能太差,如果子集都完全不同,,每個學習器只學習到一小部分資料,無法確保產生比較好的學習器。為解決這個問題,我們考慮使用相互重疊的採用子集(有放回取樣)。自主取樣法:給定包含m個樣本的資料集,先隨機取出一個放入取樣集,再放回初始訓練集,使得下次取樣仍然可能被選中,這樣,經過m次隨機取樣,可以得到含m個樣本的取樣集,初始訓練集中有樣本在取樣集裡多次出現,有的則從未出現。關於比例很好求,求極限,63.2%出現在取樣集中。預測輸出時,對於分類任務使用簡單投票法,迴歸任務使用簡單平均法。
  • 整合的組合策略
    • 平均法。對於迴歸問題一般使用平均法,分為算術平均與加權平均等。\[\begin{array}{l} G(x) = \frac{1}{T}\sum\limits_{i = 1}^T {{G_i}} (x)\\ G(x) = \sum\limits_{i = 1}^T {{\alpha _i}{G_i}} (x),{\alpha _i} \ge 0\;\;\;\;\sum\limits_{i = 1}^T {{\alpha _i} = 1} \end{array}\]
    • 投票法。對於分類問題一般使用投票法。相對多數投票法,取學習器分類結果中數目最多的類為最終類別。絕對多數投票法,票數最多,且必須大於半數。加權投票法。
    • 學習法。即通過一個學習器來進行組合。Stacking為典型代表。實際上上面兩種方法可以看做其中的特例。

偏差、方差與泛化誤差

  • “偏差-方差分解”是解釋學習演算法泛化效能的一種重要工具。我們知道,演算法在不同訓練集上學得的結果可能不同,即便這些訓練集來自同一分佈。
  • 對測試樣本\(x\),令\(y_D\)為其在資料集D上的標記,\(y\)為其真實標記(因為由於噪聲存在,會出現兩者不等情況),\(f(x;D)\)為在訓練集D上學得得模型\(f\)\(x\)上的預測輸出。
  • 由上有學習演算法的期望預測\[\bar f(x) = {{\rm E}_D}[f(x;D)]\]使用樣本數相同的訓練集產生的方差為\[{\mathop{\rm var}} ( \cdot ) = {{\rm E}_D}[{(f(x;D) - \bar f(x))^2}]\]噪聲滿足\[{\varepsilon ^2} = {{\rm E}_D}[{(\bar f(x) - {y_D})^2}]\]期望輸出與真實標記的差別稱為偏差,滿足\[bia{s^2}( \cdot ) = {(\bar f(x) - y)^2}\]為便於討論,假定噪聲期望為0,通過簡單多項式計算,可對演算法的期望泛華誤差進行分解,最後得到\[{\rm E}(f;D) = bia{s^2} + {\mathop{\rm var}} + {\varepsilon ^2}\]
  • 回顧三者含義。偏差度量學習演算法的期望預測與真實結果的偏離程度,即刻畫了演算法本身的擬合程度。方差度量了同樣大小的訓練集的變動導致的預測偏離期望預測的能力(單純從訓練集來說,好的演算法應該是變動較小的),刻畫了資料擾動造成的影響。噪聲則表達了在當前任務上任何學習演算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度。偏差-方差分解說明,泛化效能由學習演算法的能力,資料的充分性以及任務本身的難度共同決定。給定任務,為取得較好的泛化效能,則需偏差較小,即能充分擬合數據,並使方差較小,即使得資料擾動產生的誤差較小。
  • 一般來說,兩者是有衝突的,稱為“偏差-方差窘境”
  • 偏差-方差分解,這種簡單優美形式由[Geman et al., 1992]給出,僅在基於均方誤差的迴歸任務中推匯出,確實可以反映各種學習任務中的誤差決定因素。對於分類任務,由於0/1損失函式跳變性,理論上推匯出偏差-方差分解很難。但是已經有多種其他方法對偏差方差估計。
  • 從偏差-方差分解角度看,Boosting主要關注降低偏差,Bagging主要關注降低方差。

關於整合學習的錯誤率分析以及研究核心

為便於分析,我們考慮二分類問題,正例為+1,負例為-1,真實函式為\(f\),假定基分類器錯誤率為\(e\),即對每個分類器\(G_i\),有\[P({G_i}(x) \ne f(x)) = e\]假設整合通過相對多數投票法結合T個分類器,因為二分類,那麼超過半數學習器分類正確,整合分類器就正確,則整合分類器\[G(x) = sign(\sum\limits_{i = 1}^T {{G_i}} (x))\]假設個體學習器錯誤率相互獨立,則由Hoeffding不等式,\[P(G(x) \ne f(x)) = \sum\limits_{i = 1}^{T/2} {\left( {\begin{array}{*{20}{c}} T\\ k \end{array}} \right)} {(1 - e)^k}{e^{T - k}} \le \exp ( - \frac{1}{2}T{(1 - 2e)^2})\]上式表明,隨著個體學習器數目增大,整合錯誤率將指數級下降,最終趨於零。 另外,我們注意到,上面的關鍵假設:學習器相互獨立。實際上他們為解決同一問題訓練出來的,顯然不可能相互獨立。事實上,個體學習器的準確性與多樣性本身就存在衝突,如何產生並組合“好而不同”的學習器,恰恰是整合學習的研究核心。