集成學習(ensemble learning)

集成學習,又稱爲「多分類器系統」(multi-classifier system)「基於委員會的學習」(committee-based learning)等。基本的想法是結合多個學習器,得到比單一學習器泛化性能更好的學習器。html

根據個體學習器的生成方式,目前集成學習大體可分爲兩大類:算法

  • 序列化方法:個體學習器間存在強依賴關係、必須串行生成,表明是Boosting
  • 並行化方法:個體學習器間不存在強依賴關係、可同時生成,表明是Bagging「隨機森林」(Random Forest)

1、利用Hoeffding不等式估算集成學習的錯誤率上界


考慮二分類問題y∈{-1, +1},真實函數f,並假定基分類器錯誤率爲ε。假設集成經過簡單投票結合T個基分類器,i.e.若超過半數的基分類器正確,則集成分類器正確:bootstrap

接下來估算集成的錯誤率。首先,有下式網絡

設基分類器正確率爲p,由Hoeffding不等式,當n=(p - )T時,成立下述不等式dom

由n = T/2, p = 1-ε 得=1/2 - ε, 因而函數

上式估算出了集成學習錯誤率的上界,且從中能夠看出,隨着集成中個體分類器數目T的增大,集成的錯誤率將指數級降低,最終趨於零。性能

值得注意的是,以上分析基於的假設是基學習器相互獨立。然而,在現實問題中,個體學習器爲解決同一問題而訓練,並不相互獨立。所以上述分析只是理論層面,實際問題的解決,還須要深刻了解前文提到的序列化與並行化方法。學習

2、Boosting族算法


Boosting是一族可將弱學習器提高爲強學習器的算法,工做機制相似:先由初始訓練集訓練出基學習器,再根據其表現調整樣本分佈,賦予未被準確分類的樣本更高的權重,而後根據調整後的樣本分佈再訓練接下來的基分類器;重複進行,直至所有T個基學習器訓練完成,再對T個基學習器加權結合。spa

Boosting族算法中以AdaBoost(Adapative Boosting)最爲著名。設yi∈{-1, +1}, f是真實函數,AdaBoost的描述以下:3d

輸入:訓練集D = {(x1, y1), (x2, y2), ..., (xm, ym)}; 基學習算法; 訓練輪數T.

過程:

1: D1 = 1/m. //初始化訓練數據的權值分佈,每一個訓練樣本被賦予相同的權重

2: for t = 1 to T do

3:     ht(D, Dt); //基於分佈Dt從數據集D中訓練出分類器ht

4:     εt = Px~Dt(ht(x) ≠ f(x));

5:     if εt > 0.5 then break //檢查基學習器是否比隨機猜想好;不知足則學習器被拋棄,學習終止。重採樣(re-sampling)後從新訓練。

6:     αt = (1/2) * ln((1 - εt) / εt); //肯定分類器ht的權重,被誤分的樣本的權值會增大,被正確分類的權值減少,推導過程見p.175

7:     Dt+1(x) =  

                    = (Dt(x) * exp(-αt * f(x) * ht(x))) / Zt; //」重賦權法「(re-weighting)更新樣本分佈,其中Zt是規範化因子,推倒見p.176

8: end for 

輸出: H(x) = sign(∑Tt=1αtht(x)) //輸出最終的強分類器

在該算法過程當中,用的是「加性模型」(additive model)推導,即根據基學習器的線性組合來最小化指數損失函數(exponential loss function)

sign(H(x))能夠達到貝葉斯最優錯誤率。這是由於,由損失函數對H(x)的偏導

爲零能夠解得

因而

即,若H(x)可讓損失函數最小化,則分類錯誤率也將最小化。

3、Bagging與隨機森林


Bagging(Bootstrap AGGregatING)是並行集成學習最著名的表明。它直接基於自主採樣法(bootstrap sampling): 採樣出T個含m個訓練樣本的採樣集,而後基於每一個採樣集訓練出一個基學習器,再將這些基學習器結合。對預測輸出進行結合時,對分類任務採起簡單投票法,對迴歸任務使用簡單平均法。

Bagging的算法描述以下:

輸入:訓練集D = {(x1, y1), (x2, y2), ..., (xm, ym)}; 基學習算法; 訓練輪數T.

過程:

1. for t = 1 to T do

2.     ht = (D, Dbs);

3. end for

輸出:H(x) = 

算法的複雜度爲T(O(m) + O(s)),其中O(m)爲基學習器的計算複雜度,O(s)爲採樣與投票/平均過程的計算複雜度。因爲O(s)與T很小,所以算法複雜度可看做O(m)。可見Bagging是比較高效的。此外,與AdaBoost只適用於二分類任務不一樣,Bagging能夠直接用於多分類、迴歸等任務。

此外,因爲每一個基學習器只用了初始訓練集中約63.2%的樣本,剩下的樣本可用做驗證集來對泛化能力進行「包外估計」(out-of-bag estimate)

Bagging關注下降方差,在不剪枝決策樹、神經網絡等易受樣本擾動的學習器上效果更佳明顯。

隨機森林(Random Forest, RF)在以決策樹爲基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程當中引入隨機屬性選擇。

4、結合策略


學習器結合可能的優勢:

  • 提高泛化性能
  • 下降陷入局部極小的風險
  • 假設空間有所擴大,有可能學得更好的近似

接下來總結幾種常見的結合策略。

4.1 平均法

對數值型輸出,經常使用平均法(averaging)

  • 簡單平均法(simple averaging)

     

  • 加權平均法(weighted averaging)

        

其中,加權平均法的權重通常從訓練數據中學習獲得。但因爲噪聲干擾和過擬合問題,加權平均法也未必優於簡單平均法。通常而言,個體學習器性能相差較大時,宜用加權平均法,不然宜用簡單平均法。

4.2 投票法

對分類任務,最多見的是用投票法(voting)。將hi在樣本x上的預測輸出表示爲一個N維向量(h1i(x), h2i(x), ..., hNi(x)),其中hji(x)是hi在類別標記cj上的輸出。則投票法包括:

  • 絕對多數投票法(majority voting)

    

  • 相對多數投票法(plurality voting)

      

  • 加權投票法(weighted voting)

         

在不容許絕對預測的任務中,絕對多數、相對多數投票法被統稱爲「多數投票法」。

現實任務中,不一樣類型學習器可能產生不一樣的hji(x)值,常見的包括類標記和類機率。

值得注意的是,不一樣類型的預測值hji(x)不能混用。對一些能在預測出類別標記的同時產生分類置信度的學習器,其分類置信度可轉化爲類機率使用。若此類值爲進行規範化,如支持向量機的分類間隔值,則須要採用Platt縮放(Platt scaling)、等分迴歸(isotonic regression)等技術對結果進行「校準」(calibration)後才能做爲類機率使用。

4.3 學習法

訓練數據不少時,可採用學習法:經過另外一個學習器進行結合。Sacking是學習法的典型表明。這裏將個體學習器稱爲初級學習器,用於結合的學習器稱爲次級學習器,或元學習器(meta-learner)

Stacking算法描述以下:

輸入:訓練集D = {(x1, y1), (x2, y2), ..., (xm, ym)}; 初級學習算法; 次學習算法.

過程:

1: for t = 1 to T do

2:     ht = ; //使用初級學習算法產生初級學習器ht

3:  end for

4: D' = Ø; //生成次級訓練集

5: for i = 1 to m do

6:     for t = 1 to T do

7:         zit = ht(xi);

8:     end for

9:     D' = D' ∪ ((zi1, zi2, ..., ziT), yi);

10: end for

11: h' = ; //在D'上用次級學習算法產生次級學習器h'

輸出:H(x) = h'(h1(x), h2(x), ..., hT(x))

 次級學習器的輸入屬性和算法對集成的泛化能力有很大影響。具體見書pp.184-185。

相關文章
相關標籤/搜索