機器學習 Adaboost算法原理詳解

Adaboost介紹

Adaboost,是英文Adaptive Boosting(自適應增強)的縮寫,它的自適應在於:前一個基本分類器分錯的樣本會得到加強,加權後的全體樣本再次被用來訓練下一個基本分類器,同時,在每一輪中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率或達到預先指定的最大迭代數。

Adaboost步驟

  1. 初始化訓練數據的權值分佈,如果有N個樣本,每個訓練樣本最開始都被賦予相同權重:1/N。
  2. 訓練弱分類器。具體過程中,如果一個樣本被準確分類,那麼在構造下一個訓練集中,它的權重就被降低;相反,如果某個樣本沒有被準確分類,那麼它的權重就得到提高。然後,權重更新過的樣本集被用於訓練下一分類器,整個訓練過程如此迭代下去。
  3. 將各個訓練得到的弱分類器組合成強分類器。各個弱分類器的訓練過程結束後,加大分類誤差率小的分類器的權重,使其在最後的分類函數中起較大的決定作用,而降低分類誤差率的弱分類器的權重,使其在最後的分類函數中起較小的決定作用。

下面介紹幾條運算中需要用到的公式

誤差率

誤差率表示錯誤的個數佔的比重,結合每個樣本的權重的話,就變成了最右邊的公式,I中表示分類錯誤的樣本,w表示每個樣本的權重,一共有N個樣本。
在這裏插入圖片描述

權重係數

在步驟3說到,我們需要給每個分類器一個權重,最後再結合,我們需要定義一個權重係數。
在這裏插入圖片描述
權重係數,它表示弱分類器在最終分類器中的重要程度(可以得到弱分類器在最終分類器的權重)。
當e<=0.5時,a>=0,且a隨着e的減小而增大,意味着誤差率越小的分類器在最終分類器的作用越大。

例子

在這裏插入圖片描述
有10個樣本,樣本0.1.2.6.7.8是1類別,3.4.5.9是-1類別。
每個樣本的權值都是1/10=0.1,
現在我們要考慮從哪裏切一刀,使得誤差率最小。
在這裏插入圖片描述
這裏我們通過計算得到當分類值2.5時誤差率最小,爲0.3。
接着我們計算第一個分類器的權重係數:
這個a1代表第一個分類器在最終的分類函數中所佔的比重爲0.4236
在這裏插入圖片描述
在步驟2說到,我們要更新訓練集的權重,有很多種方法對數據的權重進行改變,目的都是一樣的
(對正確分類的數據減小權重,對錯誤分類的增加權重)。
在這裏插入圖片描述
上面就是對權值的更新,對正確分類的數據減小權重,對錯誤分類的增加權重,可用於下一輪的迭代。
在這裏插入圖片描述
在這裏插入圖片描述
第二個分類器的權重係數也可以計算出來,爲0.6496,這個a2代表第二個分類器在最終的分類函數中所佔的比重爲0.6496。
同理我們可以繼續對樣本進行權重更新,構造第三個分類器,最後計算出誤差率進而求第三個分類器權重係數爲0.7514。
我們最後把三個弱分類器組合起來,成爲一個強分類器
G(x)=sign(0.4236G1(X)+0.6496G2(X)+0.7514G3(X))(sign表示當x<0.取-1,當x>0,取1)
這就是Adaboost的一個構造過程,不復雜,但效果很好。

總結

Adaboost是一種集成算法,通過結合弱分類器來得到最終的強分類器

  • 優點: 泛化錯誤率低,易編碼,可用在絕大部分分類器上,無參數調整
  • 缺點: 對離羣點敏感(難以分類,權重會呈指數增長)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章