機器學習算法:Adaboost 算法詳解

機器學習算法:Adaboost 算法詳解

1

前言

用一條垂直於X軸或者Y軸的直線將藍色點和黃色點成功分離,無論這個直線是怎麼選取,這個分類都不可能達到100%的準確率。當年感知機的提出為我們解決線性問題提供瞭解題思路,當面對異或問題的時候,感知機卻無能為力。後來引入了激活函數,解決了異或問題,給感知機注入了活力。回到正題,當一條直線無法正確劃分這個分類的時候,要怎麼做呢?引入激活函數,可以嗎?

機器學習算法:Adaboost 算法詳解

2

Bagging

機器學習算法:Adaboost 算法詳解

Bagging訓練流程:

  1. 在訓練數據個數為X的數據集中,隨機抽取m個樣本集(基本分類器C訓練結束後將這些樣本放回)
  2. 通過對隨機抽取出來的m個樣本集進行訓練,形成一個誤差較小的基本分類器C1
  3. 對基本分類器C1賦予權重W1
  4. 回到步驟1,重新進行抽取m個樣本,最後將各個分類器按照一定的權重進行線性疊加,形成一個由基本分類器組成的強分類器

Bagging的特點:

A. 對每個分類器,輸入數據都是從原始訓練數據中可重複的採樣, 每個分類器的輸入服從相同的分佈,且各輸入之間相互獨立。而Boost中,各訓練數據的分佈不獨立,每個分類器的輸入樣本之間也不獨立。

B. 各分類器可以採用相同算法,不同的超參數;也可採用不同算法;

C. 每個分類器的輸出沒有權重之分,都是平等的。

它的特點在“ 隨機採樣 ”。那麼什麼是隨機採樣?

隨機採樣(bootsrap)就是從我們的訓練集裡面採集固定個數的樣本,但是每採集一個樣本後,都將樣本放回。也就是說,之前採集到的樣本在放回後有可能繼續被採集到。對於我們的Bagging算法,一般會隨機採集和訓練集樣本數m一樣個數的樣本。這樣得到的採樣集和訓練集樣本的個數相同,但是樣本內容不同。如果我們對有m個樣本訓練集做T次的隨機採樣,,則由於隨機性,T個採樣集各不相同。

此外Bagging在進行權重分配的時候有多種不同的分配方式:

  1. 簡單的投票法是 相對多數投票法 ,也就是我們常說的少數服從多數
  2. 稍微複雜的投票法是 絕對多數投票法 ,也就是我們常說的要票過半數。在相對多數投票法的基礎上,不光要求獲得最高票,還要求票過半數。否則會拒絕預測。
  3. 更加複雜的是 加權投票法 ,和加權平均法一樣,每個弱學習器的分類票數要乘以一個權重,最終將各個類別的加權票數求和,最大的值對應的類別為最終類別。

Bagging的缺點:

很可能在每次抽樣m個樣本的時候,會拿到與之前抽樣相同數據的情況,導致分類器效果在進行線性組合後形成的強分類器效果不佳,在《機器學習》一書中也提到,若進行隨機採樣,將會有36.8%的樣本是不會被抽樣到,故由於訓練集帶來的訓練誤差難以避免

3

boost提升方法

機器學習算法:Adaboost 算法詳解

提升( boosting)方法是一種常用的統計學習方法,應用廣泛且有效.在分類問題中,它通過改變訓練樣本的權重,學習多個分類器,並將這些分類器進行線性組合,提高分類的性能。提升方法的思路和代表性的提升算法 Adaboost,Adaboost算法是1995年由 Freund和 Schapire提出的

集成學習是使用一系列學習器進行學習,並使用某種規則把各個學習結果進行整合從而獲得比單個學習器更好的學習效果的一種機器學習方法。一般情況下,集成學習中的多個學習器都是同質的"弱學習器"。

基學習算法( 同質集成 ):例如“決策樹集成”、“神經網絡集成”(對應的個體學習器稱之為基學習器)

異質集成 :包含不同類型的個體學習器——同時包含決策樹和神經網絡等不同種類的學習方法

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

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

非常有趣的是 Schapire後來證明強可學習與弱可學習是等價的, 在學習中,如果已經發現了“弱學習算法”,那麼能否將它提升( boost)為“強學習算法”.

大家知道,發現弱學習算法通常要比發現強學習算法容易得多.那麼如何具體實施提升,便成為開發提升方法時所要解決的問題.

在集成的過程種很可能會發生以下三種情況:

  1. 集成效果尚佳,分類效果提升
  2. 集成效果不明顯,分類效果無提升
  3. 集成效果差,分類效果下降
機器學習算法:Adaboost 算法詳解

4

Adaboost提升思路

這樣,對提升方法來說,有兩個問題需要回答:

1.在每一輪如何改變訓練數據的權值或概率分佈;

2.如何將弱分類器組合成一個強分類器.

Adaboost算法的核心思想就是由分類效果較差的弱分類器逐步的強化成一個分類效果較好的強分類器。

而強化的過程,就是如下圖所示,逐步的改變樣本權重,樣本權重的高低,代表其在分類器訓練過程中的重要程度。而分類器在訓練的過程中會更加看重這些樣本,進行“特殊照顧”

所謂“ 三個臭皮匠,頂個諸葛亮 ”正是這個道理,可以看到在每一次分類的過程中,被分類錯誤的點的面積(即權重)在上升,分類正確的點的面積(即權重)在下降,能夠更好的使得分類器注意到這些點。

機器學習算法:Adaboost 算法詳解

不過有幾個具體的問題Boosting算法沒有詳細說明

1. 如何計算學習誤差率e

2. 如何得到弱學習器權重係數 α

3. 如何更新樣本權重D

4. 使用何種結合策略

這是Adaboost整個的算法流程,公式看起來枯燥無味,不如舉個例子看看。

機器學習算法:Adaboost 算法詳解

訓練數據集T={(x1,y1),(x2,y2),...,(xN,yN)},其中x表示輸入樣本,y∈{+1,−1}為對應的標籤。

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

機器學習算法:Adaboost 算法詳解


(a)在權值分佈為D1的訓練數據上,閾值ν取2.5時分類誤差率最低,故基本分類器為

機器學習算法:Adaboost 算法詳解

(b)G(x)在訓練數據集上的誤差率

機器學習算法:Adaboost 算法詳解

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

機器學習算法:Adaboost 算法詳解

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

機器學習算法:Adaboost 算法詳解

原先權值(表1):

現在更新後的權值(表2)

機器學習算法:Adaboost 算法詳解


可以注意到被分類錯誤的點的權值是上升了,這是因為在公式中

機器學習算法:Adaboost 算法詳解

當判斷 一致 的時候,指數函數的指數是負數,exp(-α)<1,

當判斷 不一致 的時候,指數函數的指數是正數,exp(α)>1

根據表2的權值,我們應該著重關注x=6,7,8這三個點。

機器學習算法:Adaboost 算法詳解

機器學習算法:Adaboost 算法詳解

現在更新後的權值(表3)

機器學習算法:Adaboost 算法詳解

可以看到,由於第二個分類器的在x=3,4,5上分類預測錯誤,相對應的權值都會上升。基本分類器2的權值為什麼會比基本分類器1的權值高呢?那是因為基本分類器2的預測誤差率比1的小,基本分類器1的誤差率為0.1+0.1+0.1=0.3,而基本分類器2的誤差率為0.0715+0.0715+0.0715=0.2143,當誤差率降低的時候,分類器的權重會上升,代表著這個分類器進行“投票”的時候比重是比1大的。同理構造分類器3。

機器學習算法:Adaboost 算法詳解

機器學習算法:Adaboost 算法詳解

機器學習算法:Adaboost 算法詳解

總結:權值變化表(紅色標註的為該分類器分類錯誤的權值變化)

機器學習算法:Adaboost 算法詳解

機器學習算法:Adaboost 算法詳解

注意:需要注意的是,boosting 算法在訓練的每一輪都需要檢查當前生成的基學習器是否滿足基本條件,一旦條件不滿足則基學習器被拋棄。初始設置的學習輪數T也許未達到,可能導致最終集成的學習器性能不佳。

5

總結

機器學習算法:Adaboost 算法詳解

6

案例

利用Adaboost從疝氣病症預測病馬的死亡率

機器學習算法:Adaboost 算法詳解

機器學習算法:Adaboost 算法詳解

從上述結果中可以看出,當弱分類器數目達到50個的時候,訓練集和測試集的預測準確率均達到了一個比較高的值,但是如果繼續増增加弱分類器數量的話,測試集的準確率反而開始下降了,這就是所謂的過擬合(overfitting)


分享到:


相關文章: