這個時代,如果你覺得自己不夠強,那就找幾個人聯合起來。集成學習亦如此。
這個時代,如果你覺得自己不夠強,那就找幾個人聯合起來。
集成學習是一種將幾種機器學習模型組合成一個模型的元演算法(meta-algorithm),以減小方差(例如:Bagging),偏差(例如:Boosting),或者改進預測(例如:Stacking、Blending)。
一、Bagging
Bagging:也就是自舉匯聚法(Bootstrap Aggregating),步驟如下:
Bagging就是通過M個弱模型的結果,通過並行集成的方式來獲得最終結果。因為M個數據集是相互獨立的,因此這M個弱模型之間也是相互獨立的,在最終的集成結果時,每個模型的權重是一樣的。這是和下文的Boosting所不同的。
隨機森林 充滿驚喜的演算法?mp.weixin.qq.com
二、Boosting
1. 每一次都根據上一次訓練得到的模型結果,調整數據集樣本分佈,然後再生成下一個模型;
2. 直到生成M個模型;
3. 根據M個模型的結果集成得到最終的結果;
每個模型的重要度作為每個模型結果的權重,然後加權計算得出結果。可以看出Boosting中生成多個模型的方式並不是和Bagging一樣並行生成,而是串列生成,因此也決定了多個模型結果的集成是串列集成,也就是每個模型的結果權重並不是一樣的。如何來調整樣本分佈以及計算模型的重要度,不同方法有不同的定義,詳情參見具體方法。
AdaBoost "知錯能改"的好演算法?mp.weixin.qq.comGBDT 「不斷進取」的演算法?mp.weixin.qq.comXGBoost 「威名遠揚」的演算法?mp.weixin.qq.comLightGBM "唯快不破"的演算法?mp.weixin.qq.comCatBoost 「超強戰鬥力」的演算法?mp.weixin.qq.com
三、Stacking
將訓練好的所有基模型對整個訓練集進行預測,第j個基模型對第i個訓練樣本的預測值將作為新的訓練集中第i個樣本的第j個特徵值,最後基於新的訓練集進行訓練。同理,預測的過程也要先經過所有基模型的預測形成新的測試集,最後再對測試集進行預測。
Stacking(模型堆疊) 「層層逼近」的演算法?mp.weixin.qq.com
四、Blending
原始訓練數據集劃分為訓練數據集和驗證數據集,針對訓練數據集訓練多個模型,每個模型針對驗證數據集的結果構成新的訓練數據集,每個模型針對預測數據集的結果構成新的預測數據集。然後針對新的訓練數據集訓練模型,訓練完成後,得到的模型對新的預測數據集的結果作為最終的結果。
Blending(模型混合) 「集百家長」的演算法?mp.weixin.qq.com
代碼下載:
歡迎Fork,感謝Star!!!
微信搜索,關注微信訂閱號pythonfan, 獲取更多機器學習實例和代碼。