---
title: "堆疊集成（Stacking）"
slug: stacking
language: zh-TW
source: https://aiterms.tw/terms/stacking
updated_at: 2026-07-30
tags: [機器學習, 集成學習, 堆疊, 元模型, Kaggle]
ipas_term: false
---

# 堆疊集成（Stacking）

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

## 完整說明

堆疊（Stacking，也稱 Stacked Generalization）是集成學習的最高階形式，採用分層架構：第一層包含若干不同類型的基礎模型，各自對訓練資料進行預測；第二層（元層）以第一層模型的輸出作為新特徵訓練一個元模型（通常為邏輯回歸或梯度提升），學習如何最優地組合基礎模型的預測。相比 Bagging 的簡單投票和 Boosting 的順序修正，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 當基礎模型時，邏輯迴歸當元模型；決策樹當基礎模型時，可以考慮簡單的梯度提升當元模型。

---

來源：https://aiterms.tw/terms/stacking
快查頁：https://aiterms.tw/terms/stacking
最後更新：2026/07/30
深度解說：https://aiterms.tw/learning/what-is-stacking