堆疊集成(Stacking)是什麼?

多層集成架構,用多個基礎模型的輸出作為新特徵訓練元模型,捕捉基礎模型的複雜交互。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Stacking
主題標籤
機器學習、集成學習、堆疊
考點定位
非 iPAS 核心術語
最後更新
2026/07/30
堆疊集成(Stacking)是什麼? 機器學習集成學習
術語快查

搜尋意圖: 如果你在找「堆疊集成 是什麼」或「堆疊集成 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

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

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

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

堆疊(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 已足夠。

常見問題

Stacking 為什麼要用 K-Fold 生成元特徵,而不是直接用基礎模型在全資料上的預測?

若直接用基礎模型在訓練集上的預測來訓練元模型,會造成資料洩漏:基礎模型在訓練時已經看過這些樣本,它的預測包含了對這些樣本的「記憶」而非泛化能力。元模型基於這些「被記憶的預測」訓練,會學到虛假的相關性,導致訓練精度虛高但測試精度低。K-Fold 的做法確保每個訓練樣本的「元特徵」來自一個從未見過它的基礎模型(在訓練該模型的 K-1 折中不包含它)。這樣元特徵才真實反映基礎模型的泛化能力,元模型才能學到有意義的組合規則。沒有 K-Fold,Stacking 的威力會大幅打折,甚至可能比單個基礎模型都差。

基礎模型應該選多少個?異質性有多重要?

基礎模型的數量通常是 5–10 個,在競賽中可能達到 20–30 個。更重要的是異質性:模型之間應該在架構、演算法、特徵工程等方面有本質差異,才能在決策邊界上提供不同的「視角」。例如,同時選 Random Forest、SVM、Neural Network 和 Logistic Regression 是好做法;反之,選 5 個不同超參數的 XGBoost 則異質性不足。異質性的衡量方式是檢查基礎模型之間的預測相關性:若相關性太高(如 > 0.8),說明模型太相似,元模型無法從中獲益。Stacking 的核心思想就是「群眾的智慧」,必須確保群眾意見足夠多樣。

元模型應該選什麼?XGBoost 會不會過擬合?

元模型通常選邏輯迴歸(分類)或 Ridge 迴歸(回歸),理由是:第一,簡單模型可以防止過擬合(元特徵空間通常只有 5–30 維,訓練樣本有幾萬到幾百萬,簡單模型已足);第二,簡單模型訓練快,計算成本低;第三,簡單模型參數少,超參數調優更容易。有些人會嘗試用 XGBoost 當元模型,希望進一步提升性能,但往往反而加重過擬合(元模型看的只是基礎模型的輸出,信息密度已經很高,XGBoost 的複雜度容易超過必要)。經驗法則是:元模型比基礎模型簡單一個量級,XGBoost 當基礎模型時,邏輯迴歸當元模型;決策樹當基礎模型時,可以考慮簡單的梯度提升當元模型。