提升方法:
對於一個複雜的問題,將多個專家的判斷進行適當的綜合所得出的結果,要不其中任何一個專家單獨判斷要好。
基本概念:
強可學習和弱可學習:
在概率近似正確(Probably Approximately Correct,PAC)學習的框架中,一個概念(一個類別)如果存在一個多項式算法能夠學習它,並且正確率很高,那麼就稱這個概念是強可學習的;一個概念(一個類別)如果存在一個多項式算法能夠學習它,學習的正確率僅僅比隨機猜測略好,那麼就稱這個概念是弱可學習的,理論證明(Schapire)證明強可學習和弱可學習是等價的。即在PAC學習框架中,一個概念是強可學習的充要條件是這個概念是弱可學習的。
提升方法就是從弱學習方法出發,反覆學習,得到一系列弱分類器(基本分類器),然後組合弱分類器構成一個強分類器。對提升方法而言,有兩個問題需要解決:1、在每一輪如何改變訓練數據的權值或概率分佈;2、如何將弱分類器組合成強分類器。
AdaBoost的做法:
1、提升前一輪弱分類器錯誤分類樣本的權重,降低正確分類樣本的權重,從而使後一輪弱分類器更加關注誤分類樣本;
2、加權多數表決方法,加大分類誤差率小的弱分類器的權重,使其在表決中去決定作用;
算法描述:
輸入訓練數據集:,輸出最終分類器函數
(1)初始化數據權重:
(2)對於
2.1:使用具有權值分佈的訓練數據集學習,得到基本分類器:
2.2:計算分類誤差:
2.3:計算的係數:【分類誤差越大,對分類器的權重越大】
2.4:更新數據集權重:,其中,
(3)組合弱分類器:,最終的分類器函數:
AdaBoost誤差分析:
AdaBoost誤差上界:
AdaBoost二分類誤差上界:
推論:如果存在,對所有有,則:
前向分佈算法:
考慮加法模型:,其中爲基函數,爲基函數參數,爲基函數係數,顯然AdaBoost分類器:是一個加法模型,在給定訓練數據和損失函數的條件下,學習加法模型成爲經驗風險極小化即損失函數極小化問題:。
通常上式是一個複雜的優化問題。前向分佈算法的優化策略是:因爲學習是一個加法模型,如果能夠從先往後每一步只學習一個基函數及其係數,逐步逼近優化目標函數,那麼就可以簡化優化過程。
具體地,每一步只優化
下一次更新:
最終的加法模型:
GBDT的做法:
梯度提升樹(Gradient Boost Decision Tree, GBDT),提升方法依然採用的是加法模型與前向分佈算法。以決策樹爲基函數的提升方法稱爲提升樹。GBDT與Adboost最主要的區別在於兩者如何識別模型的問題。Adaboost用錯分數據點來識別問題,通過調整錯分數據點的權重來改進模型。GBDT通過負梯度來識別問題,通過計算負梯度來改進模型。
給定當前模型,優化參數:,設損失函數爲平方和誤差,則:
,記,因此,對於迴歸問題,只需要簡單擬合殘差即可。
Xgboost的做法:
Xgboost 的全稱是eXtreme Gradient Boosting,由華盛頓大學的陳天奇博士提出,在Kaggle的希格斯子信號識別競賽中使用,因其出衆的效率與較高的預測準確度而引起了廣泛的關注。GBDT算法只利用了一階的導數信息,Xgboost對損失函數做了二階的泰勒展開,即,並在目標函數之外加入了正則項對整體求最優解,用以權衡目標函數的下降和模型的複雜程度,避免過擬合。
Xgboost目標損失函數:
其中,t表示第t輪,表示第t輪所生成的樹模型,表示正則項,。