Python3機器學習實踐:整合學習

ee.png
這個時代,如果你覺得自己不夠強,那就找幾個人聯合起來。機器學習亦如此。

image
整合學習是一種將幾種機器學習模型組合成一個模型的元演算法(meta-algorithm),以減小方差(例如:Bagging),偏差(例如:Boosting),或者改進預測(例如:Stacking)。
- 整合方法分類
-
序列整合方法:多個模型順序生成。此方法是 利用模型之間的依賴關係 。演算法可以通過提高被分錯樣本的權重來提高效能。具體參見Bagging。
-
並行整合方法:多個模型並行生成。此方法是 利用模型之間的獨立性 ,因為可以通過平均來降低誤差。具體參見Boosting。
-
樹行整合方法:這種方法可分多層,每一層可包括多種模型, 下層的訓練資料集為上一層的訓練結果 ,類似於樹。具體參見Stacking。

image
一、Bagging
Bagging:也就是自舉匯聚法(Bootstrap Aggregating),步驟如下:
-
在包含N個樣本的資料集中採用有放回的抽樣方式隨機抽取一定數量(可以為N)的樣本,構成一個數據集;
-
按照步驟1中的方式得到M個數據集;
-
利用機器學習的方法(例如:SVM,決策樹,神經網路……)對得到的M個數據集,訓練出M個弱模型(比隨機模型效果好);
-
整合M個弱模型的結果作為最終結果;
Bagging就是通過M個弱模型的結果,通過並行整合的方式來獲得最終結果。因為M個數據集是相互獨立的,因此這M個弱模型之間也是相互獨立的,在最終的整合結果時,每個模型的權重是一樣的。這是和下文的Boosting所不同的。
-
Bagging整合方式
-
迴歸問題
M個模型結果的均值;
-
分類問題
對M個模型的結果進行投票決定,票數多的作為結果;票數一樣,隨機決定;
-
代表方法
ofollow,noindex"> 隨機森林(Random Forest)

image
二、Boosting
Boosting步驟如下:
- 每一次都根據上一次訓練得到的模型結果,調整資料集樣本分佈,然後再生成下一個模型;
- 直到生成M個模型;
- 根據M個模型的結果整合得到最終的結果;
-
Boosting整合方式
每個模型的重要度作為每個模型結果的權重,然後加權計算得出結果。可以看出Boosting中生成多個模型的方式並不是和Bagging一樣並行生成,而是序列生成,因此也決定了多個模型結果的整合是序列整合,也就是每個模型的結果權重並不是一樣的。如何來調整樣本分佈以及計算模型的重要度,不同方法有不同的定義,詳情參見具體方法。
-
代表方法
AdaBoost
GBDT
XGBoost

image
三、Stacking
Stacking步驟如下:
將訓練好的所有基模型對整個訓練集進行預測,第j個基模型對第i個訓練樣本的預測值將作為新的訓練集中第i個樣本的第j個特徵值,最後基於新的訓練集進行訓練。同理,預測的過程也要先經過所有基模型的預測形成新的測試集,最後再對測試集進行預測。
- 代表方法
代表方法
StackingStacking
image
例項程式碼: Python3/tree/master/Bagging/Random_Forest" target="_blank" rel="nofollow,noindex">隨機森林 ,其他方法陸續更新。掃描下方二維碼或者微信公眾號直接搜尋” Python範兒 “,關注微信公眾號pythonfan, 獲取更多例項和程式碼。

pythonfan.jpg