這個時代,如果你覺得自己不夠強,那就找幾個人聯合起來。

集成學習亦如此。

集成學習是一種將幾種機器學習模型組合成一個模型的元演算法(meta-algorithm),以減小方差(例如:Bagging),偏差(例如:Boosting),或者改進預測(例如:Stacking、Blending)。

  • 集成方法分類
  • 串列集成方法:多個模型順序生成。此方法是利用模型之間的依賴關係。演算法可以通過提高被分錯樣本的權重來提高性能。具體參見Boosting。
  • 並行集成方法:多個模型並行生成。此方法是利用模型之間的獨立性,因為可以通過平均來降低誤差。具體參見Bagging。
  • 樹行集成方法:這種方法可分多層,每一層可包括多種模型,下層的訓練數據集為上一層的訓練結果,類似於樹。具體參見Stacking、Blending。

一、Bagging

Bagging:也就是自舉匯聚法(Bootstrap Aggregating),步驟如下:

  1. 在包含N個樣本的數據集中採用有放回的抽樣方式隨機抽取一定數量(可以為N)的樣本,構成一個數據集;
  2. 按照步驟1中的方式得到M個數據集;

  3. 利用機器學習的方法(例如:SVM,決策樹,神經網路……)對得到的M個數據集,訓練出M個弱模型(比隨機模型效果好);
  4. 集成M個弱模型的結果作為最終結果;

Bagging就是通過M個弱模型的結果,通過並行集成的方式來獲得最終結果。因為M個數據集是相互獨立的,因此這M個弱模型之間也是相互獨立的,在最終的集成結果時,每個模型的權重是一樣的。這是和下文的Boosting所不同的。

  • Bagging集成方式 回歸問題:M個模型結果的均值; 分類問題: 對M個模型的結果進行投票決定,票數多的作為結果;票數一樣,隨機決定;
  • 代表方法

隨機森林 充滿驚喜的演算法?

mp.weixin.qq.com圖標

二、Boosting

  • Boosting步驟如下:

1. 每一次都根據上一次訓練得到的模型結果,調整數據集樣本分布,然後再生成下一個模型;

2. 直到生成M個模型;

3. 根據M個模型的結果集成得到最終的結果;

  • Boosting集成方式

每個模型的重要度作為每個模型結果的權重,然後加權計算得出結果。可以看出Boosting中生成多個模型的方式並不是和Bagging一樣並行生成,而是串列生成,因此也決定了多個模型結果的集成是串列集成,也就是每個模型的結果權重並不是一樣的。如何來調整樣本分布以及計算模型的重要度,不同方法有不同的定義,詳情參見具體方法。

  • 代表方法

AdaBoost "知錯能改"的好演算法?

mp.weixin.qq.com圖標GBDT 「不斷進取」的演算法?

mp.weixin.qq.com
圖標
XGBoost 「威名遠揚」的演算法?

mp.weixin.qq.com
圖標
LightGBM "唯快不破"的演算法?

mp.weixin.qq.com
圖標
CatBoost 「超強戰鬥力」的演算法?

mp.weixin.qq.com
圖標

三、Stacking

  • Stacking步驟如下:

將訓練好的所有基模型對整個訓練集進行預測,第j個基模型對第i個訓練樣本的預測值將作為新的訓練集中第i個樣本的第j個特徵值,最後基於新的訓練集進行訓練。同理,預測的過程也要先經過所有基模型的預測形成新的測試集,最後再對測試集進行預測。

  • 代表方法

Stacking(模型堆疊) 「層層逼近」的演算法?

mp.weixin.qq.com圖標

四、Blending

  • Blending步驟如下:

原始訓練數據集劃分為訓練數據集和驗證數據集,針對訓練數據集訓練多個模型,每個模型針對驗證數據集的結果構成新的訓練數據集,每個模型針對預測數據集的結果構成新的預測數據集。然後針對新的訓練數據集訓練模型,訓練完成後,得到的模型對新的預測數據集的結果作為最終的結果。

  • 代表方法

Blending(模型混合) 「集百家長」的演算法?

mp.weixin.qq.com圖標

代碼下載:

Anfany/Machine-Learning-for-Beginner-by-Python3?

github.com
圖標

歡迎Fork,感謝Star!!!

微信搜索,關注微信訂閱號pythonfan, 獲取更多機器學習實例和代碼。


推薦閱讀:
相关文章