0 - 思路
Stacking是許多集成方法的綜合。其主要思路如下圖所示,通過訓練數據訓練多個base learners(the first-level learners),這些learners的輸出作為下一階段meta-learners(the second-level learners)的輸入,最終預測由meta-learners預測結果得到。
1 - 算法
具體地算法如下圖所示(圖片引自博客)。在第一階段,采用$K$折交叉驗證,首先將訓練數據$X_{n\times m}$和對應標簽$y_{n}$分成$K$份,訓練$K$個base-learners,對於第$i$($i=1,\cdots,K$)個base-learner,將第$i$份數據作為驗證集,其余$(K-1)$份數據作為訓練集進行訓練。而后,將第$i$個base-learners對於各自驗證集的預測結果$y_{n_i}^{(i)}$(如圖中"Predict"橘紅色所示)組合起來,即得到和訓練數據規模一樣的預測結果$y_{n}^{stage1}$(如圖中"Predictions"橘紅色所示)。將這個第一階段的預測結果$y_{n}^{stage1}$以及對應的標簽$y_{n}$作為第二階段的meta-learners的訓練數據進行訓練即可。
在測試過程中,假設對於測試數據$X_{n\times m}^{test}$,經過$K$個base-learners進行預測得到第一階段預測結果$y_{n\times K}^{stage1}$,而后可以通過硬投票或者軟投票或者其他處理方法得到第一階段的綜合預測結果$y_{n}^{stage1}$,再通過meta-learners預測最終的結果$y_{n}^{stage2}$。
注意到,Stacking可以無限疊加下去,也就是stage可以從2開始一直疊加,但實際運用中,一般選取stage為2或者3,因為太多stage對於精度的提高微乎其微甚至沒有而計算量卻需要大量增加。
2 - 參考資料
https://blog.csdn.net/weixin_43991592/article/details/89962511