機器學習算法(三):Adaboost算法

Boosting算法

集成學習

集成學習的一般結構:先產生一組個體學習器,再使用某種策略將它們結合起來。個體學習器通常由一個現有的算法從訓練數據中產生。集成學習既可以包含相同類型的個體學習器,也可以包含不同類型的個體學習器。

集成學習通過將多個學習器進行結合,常可以獲得比一般學習器顯著優越的泛化性能。這對弱分類器(指泛化性能略優於隨機猜測的學習器)尤爲明顯,因此集成學習的很多理論研究都是針對弱分類器進行的。雖然從理論上來說使用弱分類器集成足以獲得好的性能,但在實踐中出於種種考慮,人們往往會使用比較強的學習器。

假設基分類器的錯誤率相互獨立,隨着集成中基分類器數目的增大,集成的錯誤率將指數級下降,最終趨向於0。事實上,它們顯然不可能相互獨立。要獲得好的集成效果,個體學習器應『好而不同』,即個體學習器要有一定的準確性,並且要有多樣性,即學習器之間要有差異。這兩者之間也是存在衝突的。在準確性很高之後,要增加多樣性就需要犧牲準確性。事實上,如何產生並結合『好而不同』的個體學習器,恰是集成學習研究的核心。

根據個體學習器的生成方式,目前集成學習方法大致可以分爲兩大類。個體學習器之間存在強依賴關係,必須串行生成序列化方法。以及個體學習器之間不存在強依賴關係,可同時生成並行化方法。前者的代表是Boosting,後者的代表是Bagging和隨機森林算法。關於這兩類算法,將使用兩篇博客來介紹。

強可學習與弱可學習

強可學習:在概率近似正確學習的框架中,一個概念(一個類),如果存在一個多項式的學習算法能夠學習它,並且正確率很高,那麼就稱這個概念是強可學習的。

弱可學習:一個概念,如果存在一個多項式的學習算法能夠正確學習它,學習的正確率僅比隨機猜測略好,那麼就稱這個概念是弱可學習的。

後來證明強可學習與弱可學習是等價的。也就是說,在概率近似正確學習的框架下,一個概念是強可學習的充分必要條件是這個概念是弱可學習的。

通常發現弱可學習算法通常要比發現強可學習算法容易的多。集成學習就是從弱學習算法出發,反覆學習,得到一系列弱分類器,然後組合這些弱分類器,構成一個強分類器。

Boosting算法簡介

提升方法基於這樣一種思想:對於複雜的任務來說,將多個專家的判斷進行適當的綜合所得出的判斷,要比其中任何一個專家單獨的判斷好。在分類問題中,它通過改變訓練樣本的權重,學習多個分類器,並將這些分類器進行線性組合,提高分類的性能。

它改變訓練數據分佈的方法是:提高那些前一輪弱分類器錯誤分類樣本的權值,而降低那些被正確分類樣本的權值。對於將一系列弱分類器組合稱強分類器的方法是:加大分類誤差率小的弱分類器的權值,使其在表決中起較大的作用,減小分類誤差率大的弱分類器的權值,使其在表決中起較小的作用。

Adaboost作爲提升方法的典型代表,把多個不同的決策樹用一種非隨機的方式組合起來,表現出驚人的性能。其優點如下:

  1. 具有很高的精度;

  2. Adaboost提供的是一種框架,可以使用各種方法來構建子分類器;

  3. 當使用簡單分類器時,計算出的結果是可以理解的,而且弱分類器的構造特別簡單;

  4. 簡單,不用做特徵篩選

  5. 不用擔心overfitting

算法的具體過程

假設給定一個二分類的訓練數據集

T={(x1,y1),(x2,y2),...,(xN,yN) }

其中,每個樣本點由實例與標記組成。算法的具體過程如下:

輸入:訓練數據集T;弱學習算法

輸出:最終分類器G(x)

(1) 初始化訓練數據的權值分佈

D1=(w11,...,w1i,...,w1N),w1i=1N,i=1,2,...,N

(2) 對m=1,2,...,M

(a) 使用具有權值分佈Dm 的訓練數據集學習,得到基本分類器

Gm(x):X(1,+1)

(b) 計算Gm(x) 在訓練數據集上的分類誤差率

em=P(Gm(xi)yi)=i=1NwmiI(Gm(xi)yi)

(c) 計算Gm(x) 的係數

αm=12loge1emem

(d) 更新訓練數據的權值分佈

Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)

wm+1,i=wmiZmexp(αmyiGm(xi)),i=1,2,...,N

其中,Zm 是規範化因子

Zm=i=1Nwmiexp(αmyiGm(xi))

它使Dm+1 成爲一個概率分佈。

(3) 構建基本分類器的線性組合

f(x)=m=1MαmGm(x)

得到最終分類器

G(x)=sign(f(x))=sign(m=1MαmGm(x))

算法解釋

在此對算法過程中的一些關鍵點做一些解釋:

  1. 在計算分類器Gm(x) 的係數αm 時,當em12 時,αm0 ,表示該分類器的效果要比隨機預測的好時,纔會在最終的分類器中發揮正的效果。並且αm 隨着em 的減小而增大。

  2. 爲什麼在每次迭代時,都是將錯誤分類點的權值增大?提高錯誤點的權值,當下一次分類器再次錯分了這些點時,會提高整體的錯誤率,這樣會導致分類器的αm 變小,最終導致這個分類器在整個混合分類器的權值變低。通過權值的改變,也使得每一次學習到的弱分類器具有較爲顯著的差異。

  3. 在更新訓練數據的概率分佈時,我們可以將式子寫成如下形式:

    wm+1,i=wmiZmeαm,Gm(xi)=yiwmiZmeαm,Gm(xi)yi

    由上式可知,誤分類樣本的權值被放大e2αm=em1em 倍。不改變所給訓練數據,而不斷改變訓練數據權值的分佈,使得訓練數據在基本分類器的學習中起不同的作用,這是Adaboost算法的一個特點。
  4. 注意到,這裏所有αm 的和並不爲1。

  5. 對於無法接受帶權樣本的基學習算法,則可以通過重採樣法來處理。即在每一輪學習中,根據樣本分佈對訓練數據重新進行採樣,再用重新採樣的數據集對基學習器進行訓練。
  6. Boosting主要關注偏差降低,因此Boosting能基於泛化性能相當弱的學習器構建出很強的集成。

實例

下面結合一個具體的例子,來看看Adaboost算法的具體過程。首先是訓練數據的初始分佈:

實例1

圖中,”+”和”-“分別表示兩種類別,使用水平或是垂直的直線作爲弱分類器。

第一步:

實例2

其中,畫圈的樣本表示被錯誤分類的。在右邊圖中,變大了的”+”表示該訓練數據的權值被增大了。

第二步:

實例3

第三步:

實例4

將所有弱分類器組合成最終的分類器:

實例5

從圖中可以看出,最終的分類器能夠將所有的訓練數據都正確分類。

算法的改進

算法的改進有如下的方向:

  1. 調整權值更新的方法,以達到提升分類器性能,減緩退化效果。

  2. 改進訓練方法,使能更高效地進行擴展。

  3. 結合其他算法和一些額外的信息而產生新算法,達到提高精度的目的。

寫在最後

本篇博客中的部分內容源自《統計學習方法》、《機器學習》(周志華)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章