【集成学习】Stacking算法详解

devtools/2025/1/14 17:14:53/

文章目录

  • 1. Stacking核心思想
  • 2. 多层Stacking
    • 2.1 如何减轻多层Stacking过拟合
  • 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


http://www.ppmy.cn/devtools/150463.html

相关文章

80个Three.js 3D模型资源

Three.js 3D模型资源”涵盖了在WebGL和JavaScript环境下使用three.js库进行3D建模和渲染的基础知识。 Three.js是目前最流行的JavaScript库之一,用于创建和展示交互式的3D图形。它允许开发者在浏览器中直接构建复杂的三维场景,无需深入学习底层的WebGL …

《系统爆破:MD5易破,后台登录可爆破?》

声明:笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 爆破Sales系统 一、爆破MD5 场景:已知MD5的加密字符串,如何得知明…

MATLAB语言的函数实现

MATLAB语言中的函数实现详解 引言 MATLAB(矩阵实验室)是一种高级语言和互动环境,广泛应用于数值计算、数据分析、可视化以及工程与科学计算等多个领域。MATLAB的强大之处在于其丰富的函数库以及用户自定义函数的能力。本文将深入探讨MATLAB…

Node.js——http 模块(二)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

Ubuntu Server挂载AWS S3成一个本地文件夹

2023年,AWS出了个mountpoint的工具: https://github.com/awslabs/mountpoint-s3 如下是另外一种方式,通过s3fs-fuse 这个工具 sudo apt-get install automake autotools-dev \fuse g git libcurl4-gnutls-dev libfuse-dev \libssl-dev libx…

Vue 开发者的 React 实战指南:性能优化篇

作为 Vue 开发者,在迁移到 React 开发时,性能优化的思路和方法会有所不同。本文将从 Vue 开发者熟悉的角度出发,详细介绍 React 中的性能优化策略。 渲染优化对比 Vue 的响应式系统 Vue 通过响应式系统自动追踪依赖,只有在数据…

Java(五十)java-IO流-缓冲流(BufferedInputStream和BufferedOutputStream)

接下来我们学习一下java缓冲流中的读取和写入类BufferedInputStream(缓冲字节输入流)和BufferedOutputStream(缓冲字节输出流)类,这个两个类的使用方法和IO流中的FileOutputStream和FileInputStream类是差不多的。但是…

hive3后创建表默认是外部表问题

hive3 hive4创建的表总是外部表&#xff0c;但是操作使用和内部表一样&#xff0c;修改成为默认是内部表 <property><name>metastore.metadata.transformer.class</name><value> </value> </property>注意空格是必须的 后面执行 desc fo…