datawhale 學習筆記——模型融合入門

前言

這是 datawhale 數據挖掘學習的最後一次打卡——模型融合,內容很好理解,就是將訓練出來的多個模型融合在一起,集成,形成一個效果更好的模型。

這次的任務基本上是比較獨立的,既沒有用到 task3 的特徵工程內容,也沒有用到 task4 中創建的模型,相對比較獨立。不過這次打卡不打算粘貼什麼代碼了,代碼全都在教程裏,這裏只記錄一下我的理解。

簡而言之,模型的融合方法大致有以下三種:

  1. 加權融合
  2. stacking/blending
  3. boosting/bagging (樹模型的集成方法)

stacking/blending 都屬於兩層模型結構,因此歸爲一類;boosting/bagging 都是針對樹模型做的,因此也同樣歸爲一類。下面一一做一個簡單的介紹

加權融合

加權融合的思路很好理解,就是將各個分類/迴歸器的預測結果進行不同方式的融合。根據模型是迴歸模型還是分類模型,融合的方式有所不同。

分類模型通常是以投票的方式進行。即多個模型預測同一個數據,選取預測結果中類別多的作爲該樣本的輸出。

迴歸模型主要是加權融合的方式。典型的有算數平均融合(所有迴歸結果取平均值)、幾何平均融合(所有迴歸結果相乘後開 n 次根號,n 爲迴歸結果數)和加權平均(根據分配給分類器不同的權值對結果加權求和然後除以 n 取均值)。

stacking/blending

stacking/blending 都屬於兩層模型結構。

二者都是先訓練出多個模型(分類模型或是迴歸模型都可),然後針對每個模型對訓練樣本的輸出再進行訓練。具體的,將每個模型的輸出再次當做下一層模型的輸入,繼續訓練,最後訓練出一個可以整合所有模型輸出的模型。

二者最大的區別是在於訓練集的劃分問題。stacking 做的過程中把訓練集當成一個整體,輸入到下一層模型的輸出數據已經被用來訓練第一層模型;而 blending 做的時候,把訓練集劃繼續分爲第一層模型訓練集和第二層模型訓練集,這樣就避免了兩層模型訓練時使用相同的數據。

需要注意的一點是,爲了避免過擬合,無論使用兩個方法中的哪一個,都需要讓第二層模型儘可能地簡單。

blending 相對於 stacking 的優缺點對比:

優點:

  • 相比於 stacking 簡單(劃分數據集簡單粗暴,不需要使用交叉驗證)。
  • 兩層模型使用了不一樣的數據進行訓練,避免了信息泄露。

缺點:

  • 由於劃分數據界限清晰,導致的就是兩層模型訓練的數據都比較少。
  • 由於沒有使用交叉驗證,可能會導致過擬合,使模型泛化能力降低。

boosting/bagging

boosting 和 bagging 都是樹模型集成學習的方法。兩者在上一節介紹樹模型時都有介紹。不同的樹模型內部已經使用了不同的樹模型集成方法。根據使用的集成方法不同,分爲不同的算法。例如,XGBoost 就屬於典型的 boosting 方法;而隨機森林就是典型的 bagging 方法。

由於在訓練模型時,內部已經集成了這兩種方法,因此後續自己再做模型融合時,就不再需要使用這兩種方法了。

最後

還是得爲這些天看數據挖掘的教程做個總結。教程很好,能學到不少東西,尤其是配合這個很典型的比賽,邊學邊練。不過遺憾的是,由於各種原因,我並沒有花很長時間在這裏,比賽也沒打,所以進步有限。在這個過程裏體驗了一下數據挖掘比賽的整個流程,也體驗了很多機器學習庫的使用,還是有一定收穫的。

最後,希望自己以後也能獨自來打天池的比賽,如果能體驗到上榜的感覺就更帥了!現在吧,就只是想想,哈哈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章