提升算法概論:
Boosting(提升)是一族可將弱學習器提升為強學習器的算法。在分類問題中,它通過改變訓練樣本的權重,學習多個分類器,并將這些分類器進行線性組合,提高分類的性能。
提升算法基于這樣一種思想: 對于一個復雜任務來說,將多個專家的判斷進行適當?shù)木C合所得出的判斷,要比其中任何一個專家單獨判斷好。
強可學習:?
在概率近似正確學習框架(PAC)中,一個概念(類),如果存在一個多項式的學習算法能夠?qū)W習它,并且正確率很高,那么稱這個概念為強可學習的。
弱可學習:
一個概念,如果存在一個多項式的學習算法能夠?qū)W習它,學習的正確率僅僅比隨機猜測略好,那么這個概念為弱可學習。
提升:
Schapire 證明強可學習和弱可學習是等價的,就是在概率近似正確學習框架(PAC)中一個概念強可學習的充分必要條件是這個概念是弱可學習的。
因此,如果發(fā)現(xiàn)了 弱學習 算法,理論上就存在 強學習算法,通常弱學習算法更容易發(fā)現(xiàn),將弱學習算法 轉(zhuǎn)化為強學習算法的方法便是提升。
提升算法基本思路:
從弱分類學習算法出發(fā),反復學習,獲取一系列弱分類器(基本分類器),然后組合這些弱分類器,構成一個強分類器。
提升算法的兩個主要問題:?
? ? ?1. 如何構建弱分類器
? ? ? 2. 如何將弱分類器組合成一個強分類器
圍繞這兩個問題,人們提出了很多提升算法,常見提升算法如下:
常見提升算法
AdaBoost (Adaptive)
? ?1. 提高那些被前一輪弱分類器錯誤分類的樣本的權重,弱化正確分類的權重,這樣一來,后續(xù)分類器重點關注之前分類器未關注到的樣本,分類問題被一系列弱分類器分而治之。
? ?2. 采用加權多數(shù)表決來組合弱分類器。 加大誤差小的分類器權重,減小誤差大的權重。
Boosting Tree() ?提升樹
? ? 以分類樹,回歸樹作為基本分類器(弱分類器),對基本分類器進行線性組合(加法模型),采用前向分步算法。
? ? 對于分類問題采用二叉分類樹,回歸問題采用二叉回歸樹。
? ? 提升算法是統(tǒng)計學習中性能最好的方法之一。
Gradient boosting(GB) ?梯度提升
? ?優(yōu)化算法采用損失函數(shù)的負梯度作為殘差的 近視值。
Gradient boosting Decision Tree(GBDT) ?
? ? GBDT是GB和DT的結合,以決策時作為基函數(shù),梯度提升算法為優(yōu)化算法。
Xgboost ?
? ?XGBoost是提升算法的高效實現(xiàn),在各項機器學習、大數(shù)據(jù)比賽中的效果非常好。
? XGBoost與GBDT主要的不同在于其目標函數(shù)使用了正則項并且利用了二階導數(shù)信息