查看原文:http://www.wyblog.cn/2016/11/01/%e6%8f%90%e5%8d%87%e6%96%b9%e6%b3%95%e5%8f%8aadaboost/
提升方法
提升方法思路比較簡單,它意在通過改變訓練樣本之間相對的權重,從而學習出多個分類器,並將這些分類器進行線性組合,從而提高分類的性能。 從以上思路可以看出,提升方法將一個複雜的任務分配給多個專家進行判斷,並且對判斷的結果進行綜合,這樣做要比只讓一個專家來判斷要好,畢竟大家說好纔是真的好。
強可學習與弱可學習
- 一個概念,如果存在一個多項式的學習算法能夠學習它,並且正確率很高,那麼就稱這個是強可學習的。
- 一個概念,如果存在一個多項式的學習算法能夠學習它,但正確率僅比隨機猜略好,那麼就稱這個概念是弱可學習的。
而Boost,恰好就是將弱可學習方法提升爲強可學習方法的途徑,所以叫做提升方法。提升方法就是從弱可學習算法出發,反覆學習,得到一系列弱分類器,然後組合這些弱分類器,構成一個強分類器。 根據以上描述,可以看到有兩個問題需要考慮:
- 在每一輪學習中,訓練數據的權重值如何確定?
- 組合強分類器時,線性組合的係數如何確定?
AdaBoost
對於第一個問題,AdaBoost算法是提高那些被前一輪弱分類器錯誤分類樣本的權值,而降低那些被正確分類樣本的權值。這樣做的結果就是,使得被錯誤分類的樣本能得到更多關注。 對於第二個問題,AdaBoost採取加大分類誤差率小的弱分類器的權值,使其起較大作用,並且減少分類誤差率大的權值。可見,這裏的決定因素就是這個分類誤差率的大小。
算法
輸入:訓練數據集 ,其中 ;弱學習算法。 輸出:最終分類器G(x)。
- 初始化訓練數據的權值分佈:
- 對於m=1,2,3...M a). 使用具有權值分佈Dm的訓練數據集學習,得到基本分類器Gm(x)→{-1,+1} b). 計算Gm(x)在訓練數據集上的誤差率: c). 計算Gm(x)的係數: d). 更新訓練數據集的權值分佈: 其中,Zm是規範化因子,
- 構建基本分類器的線性組合並得到最終分類器:
從以上算法可以看到: 最開始步驟1,我們假設了樣本具有均勻的權重分佈,它將產生一個基本分類器G1(x)。 步驟2是一個m從1到M的循環過程,每一次循環都可以產生一個弱分類器。
- 對於b).可以看到,分類誤差率實際上就是被誤分類點的權值之和。
- 對於c).是在計算當前弱分類器在線性組合中的係數,由其表達式可知,當e<=0.5時,α>=0,並且隨着e的減小而增大,這正印證了我們需要使誤差率小的弱分類器的權值更大這個事實。
- 對於d).可以看到,每一個樣本的權值ω,都與它原來的標籤yi以及預測的標籤Gm(xi)有關,當預測正確即它們同號時,exp指數是一個負值,這樣就會減小原來樣本點的權重;當預測不正確即它們異號時,exp指數是一個正值,它會增加當前樣本點的權重。這正印證了我們需要使被誤分類樣本的權值更大這個事實。
步驟3中要注意一點的是,所有αi之和並不是等於1的,其僅表示對應分類器的重要性。 f(x)的符號決定了實例x的類,它絕對值的大小,表示分類的確信度。
提升樹
提升樹是以分類樹或者回歸樹爲基本分類器的提升方法,它被廣泛的應用,例如有名的梯度提升樹GBDT,以及另一篇博文分析的XGBOOST。 提升樹也是提升方法的一種,所以它的模型還是加法模型,只是選擇了決策樹作爲基函數。則提升樹的模型爲$latex f_{M}(X)=\sum_{m=1}^{M} T(x:\theta_{m})$。 對於不同的應用情況,模型可以採用不同的損失函數。對於迴歸問題,可以採用平方誤差損失,對於分類問題,可以採用指數損失函數,這裏的損失函數一般都只包含了經驗損失,並未關注結構風險,這是一個缺點。
梯度提升樹算法
梯度提升樹利用損失函數的負梯度在當前模型的值,即$latex -[\frac{\partial L_{(y,f(x_{i}))}}{\partial f(x_{i})}]_ {f(x)=f_{m-1}(x)}$,作爲迴歸問題提升樹算法中的殘差的近似值而擬合迴歸樹。 關於提升樹,可參考XGBOOST博文。
http://www.wyblog.cn/2016/11/25/xgboost%E6%96%87%E7%8C%AE%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
查看原文:http://www.wyblog.cn/2016/11/01/%e6%8f%90%e5%8d%87%e6%96%b9%e6%b3%95%e5%8f%8aadaboost/