【集成学习】Stacking算法详解

文章目录

  • [1. Stacking核心思想](#1. Stacking核心思想)
  • [2. 多层Stacking](#2. 多层Stacking)
    • [2.1 如何减轻多层Stacking过拟合](#2.1 如何减轻多层Stacking过拟合)
  • [3. 重复K折Bagging:](#3. 重复K折Bagging:)

集成学习(Ensemble Learning)是一种通过结合多个模型的预测结果来提高整体预测性能的技术。常见的集成学习框架有:Bagging、Boosting、Stacking。每种方法都有其独特的优势和适用场景,本文主要介绍 Stacking 算法

1. Stacking核心思想

Stacking是把多个基学习器预测结果组合起来减小方差

  • 每个基学习器可以是不同的模型
  • 最后将所有基学习器的输出通过全连接层(其它模型也可以)得到最终结果

Stacking与Bagging不同之处:

  • bagging用不同的数据(bootstrap采样),但是使用的基学习器是一样的
  • stacking是使用相同的数据训练不同的模型

2. 多层Stacking

多层Stacking是把多个模型堆叠成多层来减小方差的。如下图所示:

  • 每一层可以使用不同类型的模型,模型可以完全不一样
  • L2 层的输入可以是只有 L1 层的输出,也可以把输入和 L1 层的输出组合起来作为 L2 层的输入
  • 多层 Stacking 容器出现过拟合,因为 L1 层的输出已经被 L1 层做了一次特征提取,然后输出又输入到 L2 层,可能 L2 层会关注一些不重要的信息(比如噪声),这样就会导致过拟合

2.1 如何减轻多层Stacking过拟合

对不同层的模型进行训练时,使用不同的训练集,减轻过拟合:

  • 把训练数据分为 A 和 B 两份:使用 A 数据训练 L1 层模型,然后使用训练好的 L1 层模型去预测 B ,把预测结果再加上 B 本身,作为 L2 层的训练集。该方法的缺点是 每一层 只用了一半数据集。

重复K折Bagging减轻过拟合:

3. 重复K折Bagging:

  • 使用K折交叉验证把数据分为 K 份,每次训练模型时 K-1 份用来做训练,第 K 份用来做验证。也就是说每一层的模型都训练了 K 个版本, 每一层有 n 个模型,那么就训练了 K*n 个模型。注意:在 K 折交叉验证部分中,每一层的每一个模型都会有 K 个版本,每一个版本都会做一次交叉验证,并输出预测值, 那么每个模型总共会输出原始数据容量个预测值,作为下一层的训练集。
  • 使用 K 折较差验证可以使得下一层模型训练时使用完整数据集进行训练
  • 虽然使用了 K 折交叉验证,但是仍然会有过拟合现象,可以把上面步骤重复 n 次,将 n 次的预测结果取平均作为下一层的训练集

本文参考:
https://xie.infoq.cn/article/79caa3e47cea3f44b2b8e8ab7

相关推荐
风巽·剑染春水1 分钟前
【扩散模型原理】(六)A Unified and Systematic Lens on Diffusion Models(1)
人工智能·生成模型·diffusion·扩散模型
鱼宵4 分钟前
Spring AI 生产化改造:记忆落 Redis、向量落 ES,重启再也不丢
人工智能·redis·spring·elasticsearch·springai
小鹿的周先生5 分钟前
第18章-MCP
服务器·网络·人工智能
万物智能信息科技9 分钟前
温湿度传感器驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
人工智能·驱动开发·华为·开源·harmonyos·鸿蒙
饼饼学习空间智能10 分钟前
低空经济进入新兴支柱产业:物理AI如何重构低空智能监管系统?
大数据·深度学习·机器学习
hetao173383712 分钟前
2026-10-07 hetao1733837 的刷题记录
c++·算法
进击的横打14 分钟前
【人工智能】沙箱AI Agent 的安全隔离屏障
人工智能·安全
咯哦哦哦哦28 分钟前
opencv复现 Halcon 双相机拼接
人工智能·数码相机·opencv
Nil20828 分钟前
leetcode 279完全平方数
算法·leetcode·职场和发展
longlongzihan30 分钟前
前缀积与后缀积 —— LeetCode 238. 除了自身以外数组的乘积
开发语言·c++·leetcode