簡單易懂的人工智能系列:Boosting(AdaBoost篇)

Boosting是一種與Bagging很類似的技術。Boosting的思路則是採用重賦權(re-weighting)法迭代地訓練基分類器,主要思想:

  • 每一輪的訓練數據樣本賦予一個權重,並且每一輪樣本的權值分佈依賴上一輪的分類結果。
  • 基分類器之間採用序列式的線性加權方式進行組合。

從上圖我們可以看出boosting的流程,首先使用一個機器學習算法,可以得到一個模型,將這個模型作用域訓練樣本,通過對預測錯誤的樣本權重增大的方式,更加關注那些錯誤的樣本數據,然後再使用機器學習算法作用到這個存在加權的樣本上,獲得新的模型,一直重複這個過程(不斷改變增加錯誤樣本的權重),獲得N個模型,最後把N個模型加權線性疊加起來,得到最終的模型:

                                           

這就很想我們平時做習題,不斷加重對錯題的訓練,最終使得錯誤率下降。

與Bagging的區別

  • 樣本選擇上:每一輪的訓練集不變,只是訓練集中每個樣例在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整。
  • 樣例權重:Boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大。
  • 預測函數:Boosting:每個弱分類器都有相應的權重,對於分類誤差小的分類器會有更大的權重。
  • 並行計算:各個預測函數只能順序生成,因爲後一個模型參數需要前一輪模型的結果。

將不同的分類算法套入到此類算法框架中一定程度上會提高了原單一分類器的分類效果,但是也增大了計算量。

下面是將決策樹與這些算法框架進行結合所得到的新的算法:

  • Bagging + 決策樹 = 隨機森林
  • AdaBoost + 決策樹 = 提升樹
  • Gradient Boosting + 決策樹 = GBDT

本文主要的主角是即AdaBoost。

AdaBoost

說明性的栗子

首先看第一行,我們有一個最左側的這樣一個數據集1(二分類,正例+,負例 -),通過算法生成一個分類器1,將結果分成兩部分(左邊正,右邊負),可以看到有三個正例被錯分,我們加大他們的權重,於是我們得到一個分類模型1和基於這個模型增大權重的訓練集2

然後看第二行,我們接着用訓練集2來訓練,同樣生成了一個分類器2(左側正,右側負),和基於分類器2的增大錯誤記錄權重的訓練集3

最後看第三行,然後以同樣的方法,訓練集3繼續訓練,得到分類器3。這是我們可以發現,將分類器1,2,3疊加起來的結果爲分類準確率提高的分類器模型。

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