堆疊集成 是什麼?

Stacking:堆疊集成 的完整解釋

多層集成架構,用多個基礎模型的輸出作為新特徵訓練元模型,捕捉基礎模型的複雜交互。

堆疊(Stacking)由 Wolpert 於 1992 年提出,是集成學習中「分而治之」理念的終極體現:它不只組合多個模型,而是透過學習如何組合來達到最優。

核心架構與工作流程

堆疊的典型流程分為兩個訓練階段:

階段一:基礎模型訓練與特徵生成

  1. 將訓練集分為 K 折(通常 K=5)。

  2. 對於每個基礎模型 h_i(例如決策樹、SVM、神經網路):

    • 在 K-1 折上訓練 h_i;
    • 用訓練後的 h_i 在剩餘 1 折上進行預測,得到「元特徵」;
    • 重複 K 次,使所有訓練樣本都得到恰好一次的預測(避免資料洩漏);
    • 同時,在完整訓練集上訓練 h_i,用於後期測試集預測。
  3. 重複上述過程對所有基礎模型,得到一個「元特徵集合」,規模為 N × M(N 個樣本,M 個基礎模型)。

階段二:元模型訓練

  1. 以階段一生成的元特徵為輸入,原始標籤為輸出,訓練一個元模型 g(通常是簡單模型如邏輯回歸,偶爾用梯度提升)。
  2. 元模型學習「給定各基礎模型的預測,如何最優地組合它們」。

最終預測流程

  1. 對於新測試樣本,先用各基礎模型進行預測,得到 M 個預測值;
  2. 將這 M 個預測值作為特徵輸入元模型,得到最終預測。

防止資料洩漏的關鍵

Stacking 最容易犯的錯誤是資料洩漏:若直接用基礎模型在完整訓練集上的預測來訓練元模型,元模型會看到「基礎模型在訓練集上已見過的資料的預測」,導致元模型過擬合。正確做法是上面描述的 K-Fold 流程:每個訓練樣本的「元特徵」來自一個從未見過它的基礎模型,從而避免洩漏。

Stacking 的多個變體

1. 標準 Stacking(Cross-Validation Stacking)

上面描述的方法,用交叉驗證生成元特徵,最為穩健。

2. Hold-Out Stacking(簡化版)

為加速,有時會直接在訓練集的一個子集上訓練基礎模型,在另一個子集上生成元特徵,再訓練元模型。速度快但準確度略低,適合時間緊張的場景。

3. 多層 Stacking(Meta-Stacking)

不只有兩層,而是堆疊三層、四層甚至更多,每層都用上層的輸出作為輸入。在競賽中常見,但複雜度和過擬合風險也大幅上升。

Stacking 的優缺點

優點:

  • 性能頂級:捕捉基礎模型的複雜交互,Kaggle 等競賽的最優方案幾乎必用 Stacking;
  • 高度靈活:基礎模型可以是任意類型(決策樹、SVM、神經網路、線性模型等),無需同質;
  • 能整合異構知識:不同模型在特徵空間或決策邊界上的「視角」被元模型整合,泛化能力強。

缺點:

  • 複雜度很高:需訓練多個基礎模型,再訓練元模型,計算量大;
  • 超參數眾多:每個基礎模型都有超參數,元模型也有,調優工作量驚人;
  • 易過擬合:若資料量不足或基礎模型多樣性不夠,元模型會過度記憶基礎模型的噪音;
  • 解釋性差:黑箱程度更高,難以理解最終預測的原因;
  • 計算成本高:推論時需要多個模型的預測,延遲比單模型長。

實務使用場景

Stacking 主要用於以下場景:

  1. 競賽與追求極致性能:Kaggle、數據科學競賽等,對計算成本和複雜度容忍度高;
  2. 已有多個獨立的高性能模型:公司內有不同團隊訓練的多套模型,想透過 Stacking 發揮最大效能;
  3. 數據豐富且時間充裕:訓練多個模型和交叉驗證耗時,需要充足的資料和計算資源;
  4. 離線預測系統:對推論延遲無硬性要求,可以承受多模型推論的成本。

與 Bagging/Boosting 的比較

維度 Bagging Boosting Stacking
複雜度
訓練方式 並行 順序 分層
基礎模型 同質 同質 異質
組合方式 簡單(投票/平均) 加權投票 學習(元模型)
計算成本
性能上限 中等 最高
過擬合風險 很高
實務廣泛度 廣泛 廣泛 利基(競賽)

現代機器學習的常見做法是:快速迭代用 Bagging(隨機森林),性能優化用 Boosting(XGBoost),競賽衝刺用 Stacking。

Stacking 的黃金法則

  1. 基礎模型的多樣性至關重要:不要選 10 個差不多的決策樹模型,應該選 RF、SVM、神經網路、邏輯回歸等不同架構的模型。
  2. 元模型通常選簡單模型:邏輯迴歸、Ridge 回歸是標準選擇,避免複雜元模型導致過擬合。
  3. K-Fold 流程不可省:防止資料洩漏是 Stacking 的生命線。
  4. 驗證集要獨立:最終評估時需要一個完全沒被看過的測試集,包括基礎模型的訓練都不能看到它。
  5. 及時停止:層數越多、基礎模型越多,邊際收益遞減越快,通常兩層 Stacking 已足夠。

常見問題