【集成学习】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

相关推荐
yuanbenshidiaos1 分钟前
【大数据】机器学习 -----关于data.csv数据集分析案例
大数据·人工智能·机器学习
surtr13 分钟前
【高阶数据结构】线段树加乘(维护序列)详细解释乘与加懒标记
数据结构·c++·算法
deephub3 分钟前
TorchOptimizer:基于贝叶斯优化的PyTorch Lightning超参数调优框架
人工智能·pytorch·python·机器学习·超参数调优
墨绿色的摆渡人4 分钟前
pytorch小记(六):pytorch中的clone和detach操作:克隆/复制数据 vs 共享相同数据但 与计算图断开联系
人工智能·pytorch·python
清风~徐~来7 分钟前
【高阶数据结构】布隆过滤器+海量数据处理
数据结构·算法·哈希算法
澄岚明雪34 分钟前
力扣经典题目之55.跳跃游戏
算法·leetcode·职场和发展
pzx_0011 小时前
【深度学习】神经网络灾难性遗忘(Catastrophic Forgetting,CF)问题
人工智能·深度学习·神经网络·集成学习
玄明Hanko1 小时前
开源LLM:开启DIY你的专属AI之路
人工智能·llm·开源ai模型
柠石榴1 小时前
【练习】力扣热题100 有效的括号
c++·算法·leetcode·职场和发展
说私域1 小时前
仪式感在会员体系建设中的重要性及AI智能名片2+1链动模式S2B2C商城小程序的应用研究
人工智能·小程序