一、Stacking流程圖
Stacking是個多層的多模型集合方法。每一層都可包括多個模型,下一層利用上一層模型的結果進行學習。下面以2層為例介紹此方法:
訓練數據集設為DT,假設樣本數為3000;預測數據集合為DP,假設樣本數為500;將訓練數據集進行K-Fold(K折)處理,也就是將訓練數據集均分為K份,每一份之間都是不重複的。將其中1份當做驗證(測試)數據集,其中K-1份當做訓練數據集;這樣就行成了K對訓練數據集和測試數據集的組合;在本例中如果將K定義為為10,也就是每一折的訓練數據為2700條,測試數據為300條,預測數據始終為500條。將這10折數據集定義為k1,K2,……,k10,其中ki=(DTi,DAi),兩者分別表示第i折數據集中的訓練,驗證。
假設第一層有M個模型,分別是M1,M2,……, MM。現在以模型M1為例,針對第1折的訓練數據進行學習,學習完成後,對測試數據預測得到結果TE_M1_k1,其序列長度為300,因為每一折的測試數據為300條。接著對預測數據進行預測得到結果DP_M1,其序列長度為500,因為預測數據集為500條。 按照此步驟,待10折數據集全部學習完畢後:
M個模型均按照上面的說明,完成後。就可以得到訓練數據集的新的M個特徵:F_M1,,F_M2,……,F_MM。同樣的,預測數據集得到了同樣的10個特徵。
如果多層的話,這一層的設置可以類似於第一層進行設計。因為本例是2層的,因此在這一層,就利用一個模型M0,然後將上一層得到的新的特徵作為訓練數據集的輸入,此處注意不再利用原始的特徵,為了避免過擬合。當然輸出還是原始訓練數據集的輸出,進行學習。學習完畢後,對由新特徵形成的預測數據集進行預測,從而得到最終的結果。
代碼下載:
Anfany/Machine-Learning-for-Beginner-by-Python3?github.com
歡迎Fork,感謝Star!!!
微信搜索,關注微信訂閱號pythonfan, 獲取更多機器學習實例和代碼