【集成学习】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 分钟前
Matlab机器人工具箱使用2 DH建模与加载模型
人工智能·matlab·机器人·仿真·dh参数法·改进dh参数法
居然JuRan18 分钟前
从零开始学大模型之预训练语言模型
人工智能
沐怡旸35 分钟前
【算法--链表】114.二叉树展开为链表--通俗讲解
算法·面试
martinzh39 分钟前
向量化与嵌入模型:RAG系统背后的隐形英雄
人工智能
新智元1 小时前
学哲学没出路?不好意思,现在哲学就业碾压 CS!
人工智能·openai
AI码上来1 小时前
当小智 AI 遇上数字人,我用 WebRTC 打造实时音视频应用
人工智能·webrtc·实时音视频
一只懒洋洋1 小时前
K-meas 聚类、KNN算法、决策树、随机森林
算法·决策树·聚类
黎燃1 小时前
智能库存管理的需求预测模型:从业务痛点到落地代码的完整实践
人工智能
机器之心1 小时前
DPad: 扩散大语言模型的中庸之道,杜克大学陈怡然团队免训推理加速61倍
人工智能·openai
一车小面包1 小时前
人工智能中的线性代数总结--简单篇
人工智能·numpy