集成学习之 Stacking(堆叠集成)
在前面我们已经介绍了 Bagging 和 Boosting 两种经典的集成学习方法。今天我们来学习集成学习的另一种重要方式——Stacking(堆叠泛化,Stacked Generalization)。
Stacking 的核心思想是:通过多个不同类型的基学习器(Base Learners)进行预测,并将这些预测结果作为新的特征输入到一个“元学习器”(Meta Learner),由元学习器进行最终预测。
📌 一、Stacking 的基本思想
不同于 Bagging 的“并行”训练和 Boosting 的“串行”训练,Stacking 是一种分层的模型集成方法。
第 1 层(基学习器层):训练多个不同的模型(如决策树、SVM、逻辑回归、神经网络等),分别得到预测结果。
第 2 层(元学习器层):将第 1 层模型的预测结果作为输入特征,再训练一个新的学习器(通常是线性模型或逻辑回归)进行最终预测。
这种方法能够充分利用不同模型的优点,降低单一模型的偏差或方差,提高整体预测性能。
📌 二、数学公式表示
假设我们有一个训练数据集:
1. 基学习器(Base Learners)
我们训练 个不同的基学习器:
它们分别对输入样本 给出预测:
于是,我们得到一个新的特征向量:
2. 元学习器(Meta Learner)
元学习器 HHH 接收新的输入特征向量 ,并学习一个函数:
最终的 Stacking 模型为:
📌 三、Stacking 的训练流程
划分数据集:通常需要将训练集划分为多折(K-fold cross validation),避免基学习器的过拟合。
训练基学习器:在训练集上训练多个不同的模型,并在验证集上得到预测输出。
生成新特征:将基学习器的预测结果作为新的特征,构建一个新的训练集。
训练元学习器:用这些新特征作为输入,真实标签作为输出,训练一个元学习器。
最终预测:在测试集上,先通过基学习器得到预测,再输入元学习器,输出最终结果。
📌 四、Stacking 的优点与缺点
✅ 优点
能够充分结合不同模型的优点,提高预测精度。
更加灵活,基学习器和元学习器可以自由选择。
在 Kaggle 等数据竞赛中表现优秀,是常用的制胜策略。
❌ 缺点
训练复杂度较高,训练和验证过程需要更多计算。
容易过拟合,特别是当基学习器和元学习器过于复杂时。
实现比 Bagging、Boosting 更复杂。
📌 五、应用场景
Kaggle 数据竞赛:Stacking 是 Kaggle 上的常见获胜手段,通过融合多种模型得到更鲁棒的结果。
金融风控:使用多个模型预测信用违约率,最后由元学习器给出最终判断。
医疗诊断:结合逻辑回归、SVM、神经网络等多种模型,提升疾病预测的准确率。
📌 六、Stacking 结构图(描述)
输入层:原始特征
。
基学习器层:多个不同的模型
,输出预测结果。
元学习器层:将基学习器的输出作为输入,再进行最终预测。
(图示可画成两层结构,第一层是多个并行模型,第二层是一个元学习器汇总结果。)
📌 七、总结
Stacking 与 Bagging、Boosting 一样,属于集成学习方法。
它的特点是 分层建模:基学习器 → 元学习器。
适用于对模型效果要求较高的场景,但计算复杂度较大。
一句话总结:
Stacking 就像是“模型中的元模型”,通过让多个模型“投票”,再交由一个最终裁判(元学习器)决定结果,从而提升预测性能。