Boosting 是一類算法的統稱,它們的主要特色是使用一組弱分類器來構造一個強分類器。弱分類器意思是預測的準確性不高,可能只比隨便亂猜稍好一點。強分類器指準確性較高的分類器。簡單來講的話,Boosting 能夠理解爲俗話所說的「三個臭皮匠頂個諸葛亮」。git
Boosting 並無規定具體的實現方法,不過大多數實現算法會有如下特色:算法
Boosting家族有一系列算法,常見的好比 AdaBoost、GDBT、XGBoost,還有 BrownBoost、LogitBoost、RankBoost 等等。網絡
順便說一下幾種集成學習(Ensemble)方法的區別,集成方法是指構造多種模型,並經過必定的方法組合起來,綜合下來的預測效果高於單個模型的預測效果。函數
集成學習有幾種方式,Boosting原理 中有幾張圖很直觀,借用在這裏。學習
Bagging/投票
Bagging 是一種投票機制,先生成多個模型,而後讓它們投票決定最終的結果。典型的好比隨機森林算法。spa
Boosting/迭代提高
Boosting 是迭代生成模型,每一個模型要基於上一次模型的效果。每次迭代,模型會關注以前的模型預測效果很差的那些樣本。本文下面要講述的就屬於這類算法。3d
Stacking/多層疊加
Stacking 是多層疊加的意思。也是先生成多個模型,可是用這些模型的預測結果做爲下一層模型的輸入,有點像多層神經網絡的意思。blog
AdaBoost 是上述 Boosting 思想的一種具體實現算法,通常採用決策樹做爲弱分類器。那麼看一下 AdaBoost 是如何實現迭代生成一系列弱分類器、調整樣本權重,以及設置弱分類器權重從而構造出一個強分類器的。ip
以離散型AdaBoost(Discrete AdaBoost) 爲例:
假設有N個樣本 (x1,y1), (x2,y2)…(xN,yN),其中 y1...yN ∈{-1, 1},即二分類問題。rem
3.3 計算該分類器 ht 在最終的強分類器中的權重 。這個公式意味着ht的預測準確率越高,在強分類器中的權重越大(下文還有說明)。
3.4 迭代中的強分類器
3.5 更新樣本權重,對全部樣本計算 ,其中 是 第t輪迭代(當前迭代)第 i 個樣本的權重, 是該樣本下一輪(t+1)的權重。這個公式意味着正確的樣本將減小權重,錯誤的樣本將增長權重(下文還有說明)。
3.6 將全部樣本的權重從新歸一化,即便得全部樣本的權重和爲1。可知 (t+1)輪全部樣本權重和爲 ,令 ,便可使得
3.7 t = t + 1,進行下一輪迭代
上面的步驟中,咱們討論幾個問題:
AdaBoost 幾乎能夠「開箱即用」,由於它是自適應的,對參數不會太敏感。
它在必定程度上能夠避免「維度災難」,我理解主要是 AdaBoost 只須要構造弱分類器,好比決策樹的話,能夠只使用那些比較重要的特徵,樹的深度很淺,運行速度較快。
同時多個弱分類器的集成還能提高模型的預測能力。
比較明顯的一點是對噪音和異常數據比較敏感,由於算法中會對分類錯誤的樣本持續提高關注。
前面算法中直接給了幾個公式,好比分類器的權重 α 和 樣本權重更新公式,爲何採用這樣的計算公式,咱們來推導一下。
假設有N個樣本 (x1,y1), (x2,y2)…(xN,yN),其中 y1...yN ∈{-1, 1},即二分類問題。有一系列分類器k 能夠線性組合成一個強分類器C,在第 m-1 次迭代,分類器:
這裏C是強分類器,k是弱分類器,α 是 k在 C中的權重,下標 1...m-1 是迭代的輪次。注意這裏所用的記號與前面算法步驟中的公式的記號有不一樣,注意各自的含義。
接下來第m輪分類器
由於是採用迭代的方法逐個構造分類器k,因此在第m輪,能夠認爲 C_(m-1) 已是肯定的了,如今須要的是找到一個好的 km 及其係數 αm。
對分類器 Cm 採用指數型偏差
令 m=1時 ,m>1時 ,上式可寫爲
若是km預測正確,則 ,若是km預測錯誤,則 ,所以上式再分裂爲預測正確和預測錯誤的項:
(公式1)
(公式2)
咱們但願找到合適的 km 和 αm 使得 E最小。
若是令錯誤率
則
3.另外看下更新樣本權重。
因爲 ,
因而
因此
深刻淺出ML之Boosting家族
維基百科 —— Boosting (machine learning))
維基百科 —— AdaBoost