目的:為了讓訓練效果更好
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