機器學習入門-集成算法(bagging, boosting, stacking)


目的:為了讓訓練效果更好

bagging:是一種並行的算法,訓練多個分類器,取最終結果的平均值 f(x) = 1/M∑fm(x)

boosting: 是一種串行的算法,根據前一次的結果,進行加權來提高訓練效果

stacking; 是一種堆疊算法,第一步使用多個算法求出結果,再將結果作為特征輸入到下一個算法中訓練出最終的預測結果

 

1.Bagging:全程boostap aggregation(說白了是並行訓練一堆分類器)

最典型的算法就是隨機森林

隨機森林的意思就是特征隨機抽取,即每一棵數使用60%的隨機特征,數據隨機抽取,即每一棵樹使用的數據是60%-80%,這樣做的目的是為了保證每一棵樹的結果在輸出是都存在差異。最后對輸出的結果求平均

隨機森林的優勢
               它能處理很高維度的數據,不需要進行特征選擇

                在訓練后他能給出哪些特征的重要性,根據重要性我們也可以進行特征選擇

                特征重要性的計算方法:如果有特征是A,B,C,D 根據這4個特征求得當前的error,然后對B特征采用隨機給定記為B*,對A,B*,C,D求error1,

                如果error == error1 ,說明B特征不重要

                如果error < error1 說明B特征的重要性很大

當隨機森林樹的個數超過一定數量后,就會上下浮動

 

2.Boosting: 是一種串行的算法,通過弱學習器開始加強,通過加權來訓練

Fm(x) = Fm-1(x) + argmin(∑L(yi, Fm-1(x) + h(xi) ))   通過前一次的輸出結果與目標的殘差值,來訓練下一顆樹的結果(XGboost)

這里介紹一種Adaboost(雙加權)

Adaboost 每一次使用一棵樹,根據前一顆樹的輸出結果,來對數據進行加權,比如有5個數據,剛開始的權重都為0.2, 其中第3個數據被判錯了,那么第3個數據的權重就為0.6,將經過加權后的數據輸入到下一顆樹中,再進行訓練

根據每一棵樹的准確率,再進行權重加權,獲得最終的輸出結果

對於數據的權重加和

 

3.Stacking : 聚合多個分類或回歸模型

堆疊,拿來一堆直接上

可以堆疊各種各樣的分類器(KNN, SVM, RF)

分階段進行,第一個階段可以使用多個分類器獲得分類結果,第二階段將分類結果作為特征輸入到一個分類器中,得到最終的結果,缺點就是耗時

第一階段                                  第二階段

RF      ----- 0 1 0 1 --作為特征--輸出結果           

LR     ------ 1 0 1 0  -----LR-------1 0 1 0 

DT     -------1 1 0 1     訓練模型

xgboost---- 1 1 0 1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM