Towards Data Science

Does Stacking Beat Your Best Model?

8.5内容质量

TL;DR · AI 摘要

模型堆叠效果取决于基础模型错误的多样性,实验表明差异性模型组合可提升0.01-0.03准确率。

核心要点

  • 堆叠在基础模型错误类型差异大时提升显著(实验提升0.01-0.03)
  • 随机森林等同类模型堆叠几乎无增益(准确率仅提升0.001)
  • 控制实验使用5折交叉验证重复3次确保结果可靠性

结构提纲

按章节快速跳转。

  1. 提出堆叠是否超越最佳模型的核心问题,强调错误多样性的重要性。

  2. 解释堆叠通过组合不同错误类型模型提升性能的机制。

  3. 构建两种条件对比:差异模型组与同类模型组的准确率表现。

  4. 展示差异模型组堆叠提升0.01-0.03,同类模型组几乎无增益。

  5. 采用重复5折交叉验证(15次分割)确保实验结果可靠性。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 模型堆叠有效性分析
    • 理论前提
      • 错误类型差异性
    • 实验条件
      • 差异模型组
      • 同类模型组
    • 验证方法
      • 5折交叉验证

金句 / Highlights

值得收藏与分享的关键句。

#机器学习#模型堆叠#Ensemble Learning#实验验证
打开原文

模型堆叠能否超越你的最佳模型? | Towards Data Science

机器学习

模型堆叠能否超越你的最佳模型?

只有在模型犯下不同错误时才会带来帮助。

Himanshu Sharma

2026年10月14日

6分钟阅读

在Google上关注我们

分享

横幅插图由Claude(Anthropic)生成。

模型堆叠示意图:四种不同的分类器在相同数据上绘制出不同的决策边界,而堆叠集成将它们合并为一个边界。

堆叠的理论依据

在竞争性机器学习中,集成学习几乎被视为圭臬:堆叠几个模型,将它们的预测结果输入元模型进行学习组合,通常可以超越堆叠中的任意单个模型。其理论机制具有明确性而非模糊性:当基础模型产生不同类型的错误时,该方法才有效。如果模型A能正确判断模型B错误的案例,元模型可以学会在各自可靠领域信任不同模型。当所有基础模型产生相同错误时,没有互补性可言,堆叠应该几乎没有任何增益。

这是一个可验证、可证伪的主张,而不仅仅是"堆叠是好的",更具体地说是"堆叠的增益程度与基础模型错误差异程度成正比"。因此我针对同一数据集构建了两种条件:一种为堆叠预留真实帮助空间,另一种刻意消除这种空间,并测量实际发生的情况。下文所有结果均来自重复分层5折交叉验证(3次重复,共15折),而非单次训练/测试划分——这是对之前基准测试中发现的局限性(单次划分结果波动过大)的稳健性修正。

数据集:一个合成的二分类问题(使用sklearn.datasets.make_classification生成,2000个样本,20个特征,现实噪声和类别重叠)——明显为合成数据,选择该数据集是为了直接控制基础模型多样性,而非依赖偶然存在的真实数据集。

条件1 — 多样化的基础模型:堆叠理论所依赖的设定:逻辑回归(线性)、决策树(轴对齐划分)、支持向量机(基于核函数,本质上不同的决策边界)和k近邻(实例基于,完全没有显式边界)。四种真正不同的决策边界绘制方式。

条件2 — 相关基础模型:刻意违背堆叠理论的设定:随机森林、梯度提升和额外树——三种同源思想(树集成)的变体,彼此之间的一致性远高于多样化组别。

python

code
diverse_base = [
("logreg", LogisticRegression(max_iter=2000)),
("tree", DecisionTreeClassifier(max_depth=8)),
("svc", SVC(probability=True)),
("knn", KNeighborsClassifier(n_neighbors=15)),
]
stacking = StackingClassifier(
estimators=diverse_base,
final_estimator=LogisticRegression(max_iter=2000),
cv=5,
)

实验结果

条件

最佳单模型

投票集成

堆叠集成

多样化基础模型

0.820(SVC)

0.809

0.830

相关基础模型

0.834(ExtraTrees)

0.829

0.835

在多样化条件下,堆叠方法证明了自己的价值。0.830 对比最佳单模型的 0.820 —— 考虑到误差范围(堆叠为 ±0.015,单模型为 ±0.012)几乎不重叠,这是一个真实且有意义的差距。这正是堆叠方法理论预测的表现:四个模型产生真正不同类型的错误,为元模型提供了真实的互补信号进行组合。

在相关性条件下,堆叠的优势几乎消失。0.835 对比 0.834 —— 0.1 分的差距完全被标准差吞噬(分别为 ±0.014 和 ±0.019)。三种树集成变体之间高度一致,几乎没有可供元模型利用的差异。这正是理论预测的直接验证:没有误差多样性,堆叠方法也无法带来优势。

令人意外的是:在两种条件下,投票方法的表现均弱于最佳单模型。不是堆叠方法,而是简单的平均。多样化条件下 0.809 对比 0.820,相关性条件下 0.829 对比 0.834。简单的投票机制无法对真正表现较差的模型进行权重调整,它只是对所有基础模型进行等权重平均,包括那些拉低整体表现的基础模型。相比之下,堆叠的元模型能够学习对每个基础模型的信任程度——这正是它没有遭遇相同困境的原因。

成本方面的权衡

4.8秒(SVC)

5.4秒

23.7秒

3.6秒(ExtraTrees)

24.9秒

125.9秒

在多样化条件下,堆叠方法用23.7秒换取真实1分的准确率提升,在大多数实际场景中是合理的权衡。但在相关性条件下,这种权衡变得非常困难:125.9秒——大约是单模型训练时间的35倍——只为一个与零无统计显著差异的0.1分提升。这在论文中不是四舍五入误差,在需要定期重新训练的流水线中,却是实实在在的重复成本。

为何投票方法在堆叠获胜时仍会失败

这需要单独解释,因为这是最不直观的结果。投票和堆叠使用相同的基础模型——唯一的区别在于它们的组合方式。投票采用所有基础模型预测的固定等权重平均。堆叠则训练第二个模型,其唯一任务是学习正确的权重分配,依据基础模型在不同类型样本上的实际可靠性。

在多样化条件下,KNN和普通决策树是四个基础模型中最弱的——表现稳定但明显落后于SVM。投票机制无法识别这一点并降低它们的权重,只是对四个模型进行等比例平均,较弱的两个模型将集成结果拉低至强单模型单独表现以下。而堆叠的元模型通过所有四个模型的折叠外预测进行训练,学习到更接近"信任SVM更多,信任树更少"的权重分配——这正是它能够击败最佳单模型而非被最弱模型拖累的机制。

该对比的局限性

  • 仅使用了一个合成数据集。多样化与相关性模式是集成理论的一般性质,而非本数据集特有,但具体数值(堆叠优势的大小、投票劣势的幅度)在具有不同噪声特征的真实复杂数据中会发生变化。
  • 基础模型选择并非穷举搜索。选择四组"多样化"模型或三组"相关性"模型的不同组合,可能会改变这些具体数值——但无论具体模型如何体现"多样化"或"相关性",其底层机制(多样性为元模型创造增值空间)应保持不变。
  • 仅适用于二分类问题。多分类或回归问题的堆叠行为可能不同,特别是在元模型交叉验证的结构设计方面。

实际决策框架

在选择堆叠集成方案替代单一最佳模型前,请先思考三个问题:

  • 候选基础模型是否真的产生不同类型的错误,还是仅仅名称不同?三种树集成变体听起来多样化,但往往在影响堆叠效果的关键维度上并不真正多样。在假设多样性之前,请先检查基础模型预测结果(或错误)之间的相关性——只需一行代码,就能直接预测堆叠能带来多大帮助。
  • 如果存在准确率提升,其幅度是否超过模型折叠间的噪声水平?单次训练/测试划分可能会报告一个实际上只是噪声的"堆叠优势"。在信任这种比较之前,请进行交叉验证并观察分布范围,而不仅仅是平均值。
  • 在实际的重新训练频率下,重新训练堆叠模型与单一模型的实际成本差异是多少?一次126秒的训练微不足道。但如果每年每晚都要花费126秒进行训练,而提升幅度在噪声范围内,这种成本就需要明确指出,而不是默认接受。

核心结论

"堆叠优于最佳单一模型"这一结论成立的前提是可验证的具体条件——基础模型的错误方式存在真正的多样性——在这一前提之外,该结论的成立性会显著降低。更有意思且更具操作性的发现不是堆叠与单一模型的抽象对比,而是:即使使用完全相同的基模型,朴素投票法的表现可能甚至不如最佳单一模型,而堆叠方案却可以超越。模型组合并非免费,简单平均不等于有效组合——元模型学习何时信任哪些模型的能力,正在完成简单平均无法复制的实际工作。

Jupyter Notebook for the experiment