集成學習方法之Bagging,Boosting,Stacking

        “團結就是力量,這力量是鐵,這力量是鋼… …”,小學學的一首歌,至今還刻骨銘心。“團結就是力量”,完美的闡述了機器學習中非常強大的集成學習方法的思想。其實,集成學習方法就這麼簡單,將多個模型組合在一起會得到更強大的模型。本篇就讓我們一起來探討比賽必用神技——集成學習方法(Ensemble Learning Method)。
       

1)什麼是集成學習方法

        集成學習是一種技術框架,訓練多個基模型,按照不同的思路組合基模型,以達到更好的結果。用於組合的基模型,在大多數情況下並不是很好,比如低方差高偏差而準確度不夠或者低偏差高方差而缺乏泛化能力。因此,集成學習的思想是,將這些基模型組合在一起,以減少偏差或者方差,創建一個表現更好的強大的模型。
        用以組合的基模型可以選擇同質模型(Bagging,Boosting),比如基模型全部爲決策樹模型;也可以選擇使用非同一類模型,即異質模型(Stacking),比如基模型包括隨機森林,KNN,支持向量機。需要注意的是,我們選擇的基模型必須和我們的組合方式一致。如果我們選擇的基模型是高方差低偏差,選擇的組合方式應該傾向於減小方差,比如bagging;相反,我們選擇的基模型是高偏差低方差,選擇的組合方式應該傾向於減小偏差,比如boosting。
        目前,有三種常見的集成學習框架:bagging,boosting和stacking。

       

2)Bagging

        Bagging(bootstrap aggregating)的框架思想是,選擇同質的基學習器,讓基學習器之間相互獨立並行訓練,最後將所有基學習器的結果組合(分類使用投票,迴歸使用平均)在一起。基學習器主要選擇高方差低偏差的模型。
       

在這裏插入圖片描述
        從上圖中可以看出,bagging是在初始的數據集上進行LL次隨機有放回的採樣(bootstrap sampling)得到LL個不同的訓練集,利用LL個不同的訓練集訓練LL個基分類器,再對這LL個弱學習器通過投票或者平均的策略得到最終的強學習器。
        其中,bootstrap sampling叫自助採樣法或者有放回的採樣,是指對於樣本量爲mm的訓練集,每次採樣一個樣本並將樣本放回,重複採樣mm次,得到一個樣本量爲mm的採樣集。由於是隨機採樣,得到的LL個數據集是不一樣的,這樣保證子模型之間的差異性。同時,對於樣本量爲mm的訓練集,平均只有63%的樣本被每個分類器採樣,剩餘的37%沒有被採樣到。正是因爲如此,原始訓練集中有噪音的數據纔有機會不被採樣到,所以,bagging可以降低模型的不穩定性即方差。
       基於bagging框架的代表算法有隨機森林,我們下篇具體再探討。

       

3)Boosting

       Boosting框架思想是,選擇同質的基學習器,讓基學習器之間按照順序進行訓練,並讓每個基學習器都嘗試去修正前面的分類。
在這裏插入圖片描述
        從上圖可以看出,boosting自適應的依次擬合多個基學習器,當前模型訓練是基於上一個基學習器的訓練結果進行訓練的,當前基學習器會增加被錯分樣本的權重,進而減少預測的錯誤率。因此,和bagging不一樣,boosting主要集中減少模型的偏差,通常基模型選擇具有高偏差低方差的模型。如果選擇決策樹作爲基模型,則大多數選擇深度較淺的決策樹,同時也降低模型擬合的計算成本。
        需要注意的是,由於boosting將注意力集中在分類錯誤樣本上,因此boosting對訓練數據的噪音非常敏感,如果訓練數據含有很多的噪音數據,那基學習器都會集中在噪音數據上做訓練,反而會影響整個模型的效果。
        基於boosting框架的代表算法有AdaBoost(Adaptive Boosting)和Gradient Boosting,後面我們再詳細探討。
       

4)Stacking

       Stacking和bagging和boosting完全不一樣。Stacking使用異質的基學習器,bagging和boosting使用同質的基學習器。另外,Stacking聚合基模型使用的方式是模型融合,而bagging和boosting採用的是一些指定的策略。
       Stacking框架思想是,選擇異質的基學習器並行的在訓練集上進行訓練,將訓練好的所有基模型對預測集進行預測,將所有基模型的預測值作爲另一個融合模型的訓練集進行訓練,當有新的數據集過來,首先通過基模型預測,再輸入到融合模型做最終的預測輸出。比如我們擬合由m 個基學習器組成的 stacking 集成模型。首先我們將訓練數據分爲訓練集和測試集,在訓練集上分別訓練m個基學習器,利用訓練好的基學習器對預測集進行預測輸出m個預測指標,m個預測指標作爲融合模型的訓練集對融合模型進行訓練。實際應用中,我們通常使用K折交叉驗證進行模型訓練,融合模型一般選擇邏輯迴歸。
       Stacking框架思想有點類似神經網絡。下圖就是兩層的stacking集成模型。
在這裏插入圖片描述
       

5)總結

  • 集成學習只能降低風險,並不能保證優於最好的基學習器,但通常情況集成學習得到的模型效果是最好的。
  • 集成學習的提前假設是,我們以一定的策略組合基模型,能夠得到更具有擼棒性或更精準的模型;
  • bagging通過平均(分類是投票)的策略進行模型組合,因此可以降低模型的方差,無法顯著降低模型的偏差。但有一個前提條件,基模型之間必須有差異性,當基模型之間相互獨立,方差降低的效果最好。bagging使用bootstrap採樣生成不同的模型,random forest在bagging的基礎上,增加了特徵的隨機。
  • boosting是序列化對損失函數進行最小化,因此可以降低模型的偏差,無法顯著降低模型的方差。基模型之間有強相關性。
  • stacking主要也是降低模型的偏差。

       
        以上就是我們對集成學習方法原理進行的簡單探討,後面我們再詳細探討基於這些集成學習方法的一些算法,比如Random Forest,AdaBoost,GBDT,Xgboost。好了,再讓我們一起來唱一遍,“團結就是力量,這力量是鐵,這力量是鋼… …”
       
       
(歡迎大家在評論區探討交流,也歡迎大家轉載,轉載請註明出處)

上篇:Scikit-learn決策樹算法庫總結與簡單實踐
下篇:隨機森林(Random Forest)算法原理總結

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