搜尋意圖: 如果你在找「堆疊集成 是什麼」或「堆疊集成 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 多層集成架構,用多個基礎模型的輸出作為新特徵訓練元模型,捕捉基礎模型的複雜交互。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
多層集成架構,用多個基礎模型的輸出作為新特徵訓練元模型,捕捉基礎模型的複雜交互。
堆疊(Stacking)由 Wolpert 於 1992 年提出,是集成學習中「分而治之」理念的終極體現:它不只組合多個模型,而是透過學習如何組合來達到最優。
核心架構與工作流程
堆疊的典型流程分為兩個訓練階段:
階段一:基礎模型訓練與特徵生成
將訓練集分為 K 折(通常 K=5)。
對於每個基礎模型 h_i(例如決策樹、SVM、神經網路):
- 在 K-1 折上訓練 h_i;
- 用訓練後的 h_i 在剩餘 1 折上進行預測,得到「元特徵」;
- 重複 K 次,使所有訓練樣本都得到恰好一次的預測(避免資料洩漏);
- 同時,在完整訓練集上訓練 h_i,用於後期測試集預測。
重複上述過程對所有基礎模型,得到一個「元特徵集合」,規模為 N × M(N 個樣本,M 個基礎模型)。
階段二:元模型訓練
- 以階段一生成的元特徵為輸入,原始標籤為輸出,訓練一個元模型 g(通常是簡單模型如邏輯回歸,偶爾用梯度提升)。
- 元模型學習「給定各基礎模型的預測,如何最優地組合它們」。
最終預測流程
- 對於新測試樣本,先用各基礎模型進行預測,得到 M 個預測值;
- 將這 M 個預測值作為特徵輸入元模型,得到最終預測。
防止資料洩漏的關鍵
Stacking 最容易犯的錯誤是資料洩漏:若直接用基礎模型在完整訓練集上的預測來訓練元模型,元模型會看到「基礎模型在訓練集上已見過的資料的預測」,導致元模型過擬合。正確做法是上面描述的 K-Fold 流程:每個訓練樣本的「元特徵」來自一個從未見過它的基礎模型,從而避免洩漏。
Stacking 的多個變體
1. 標準 Stacking(Cross-Validation Stacking)
上面描述的方法,用交叉驗證生成元特徵,最為穩健。
2. Hold-Out Stacking(簡化版)
為加速,有時會直接在訓練集的一個子集上訓練基礎模型,在另一個子集上生成元特徵,再訓練元模型。速度快但準確度略低,適合時間緊張的場景。
3. 多層 Stacking(Meta-Stacking)
不只有兩層,而是堆疊三層、四層甚至更多,每層都用上層的輸出作為輸入。在競賽中常見,但複雜度和過擬合風險也大幅上升。
Stacking 的優缺點
優點:
- 性能頂級:捕捉基礎模型的複雜交互,Kaggle 等競賽的最優方案幾乎必用 Stacking;
- 高度靈活:基礎模型可以是任意類型(決策樹、SVM、神經網路、線性模型等),無需同質;
- 能整合異構知識:不同模型在特徵空間或決策邊界上的「視角」被元模型整合,泛化能力強。
缺點:
- 複雜度很高:需訓練多個基礎模型,再訓練元模型,計算量大;
- 超參數眾多:每個基礎模型都有超參數,元模型也有,調優工作量驚人;
- 易過擬合:若資料量不足或基礎模型多樣性不夠,元模型會過度記憶基礎模型的噪音;
- 解釋性差:黑箱程度更高,難以理解最終預測的原因;
- 計算成本高:推論時需要多個模型的預測,延遲比單模型長。
實務使用場景
Stacking 主要用於以下場景:
- 競賽與追求極致性能:Kaggle、數據科學競賽等,對計算成本和複雜度容忍度高;
- 已有多個獨立的高性能模型:公司內有不同團隊訓練的多套模型,想透過 Stacking 發揮最大效能;
- 數據豐富且時間充裕:訓練多個模型和交叉驗證耗時,需要充足的資料和計算資源;
- 離線預測系統:對推論延遲無硬性要求,可以承受多模型推論的成本。
與 Bagging/Boosting 的比較
| 維度 | Bagging | Boosting | Stacking |
|---|---|---|---|
| 複雜度 | 低 | 中 | 高 |
| 訓練方式 | 並行 | 順序 | 分層 |
| 基礎模型 | 同質 | 同質 | 異質 |
| 組合方式 | 簡單(投票/平均) | 加權投票 | 學習(元模型) |
| 計算成本 | 中 | 中 | 高 |
| 性能上限 | 中等 | 高 | 最高 |
| 過擬合風險 | 低 | 高 | 很高 |
| 實務廣泛度 | 廣泛 | 廣泛 | 利基(競賽) |
現代機器學習的常見做法是:快速迭代用 Bagging(隨機森林),性能優化用 Boosting(XGBoost),競賽衝刺用 Stacking。
Stacking 的黃金法則
- 基礎模型的多樣性至關重要:不要選 10 個差不多的決策樹模型,應該選 RF、SVM、神經網路、邏輯回歸等不同架構的模型。
- 元模型通常選簡單模型:邏輯迴歸、Ridge 回歸是標準選擇,避免複雜元模型導致過擬合。
- K-Fold 流程不可省:防止資料洩漏是 Stacking 的生命線。
- 驗證集要獨立:最終評估時需要一個完全沒被看過的測試集,包括基礎模型的訓練都不能看到它。
- 及時停止:層數越多、基礎模型越多,邊際收益遞減越快,通常兩層 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 當基礎模型時,邏輯迴歸當元模型;決策樹當基礎模型時,可以考慮簡單的梯度提升當元模型。