写点什么

实用机器学习笔记二十三:集成学习之 Stacking

作者:打工人!
  • 2022 年 3 月 06 日
  • 本文字数:839 字

    阅读完需:约 3 分钟

实用机器学习笔记二十三:集成学习之Stacking

前言:

本文是个人在 B 站自学李沐老师的实用机器学习课程【斯坦福 2021 秋季中文同步】的学习笔记,感觉沐神讲解的非常棒 yyds。

Stacking:


  • Stacking 即是把多个模型组合起来减小方差如下图:

  • 每一个模型可以是不同的模型类型

  • 最后每一个模型的输出通过全连接层进行线性组合作为最终结果


  • Stacking 目前被广泛应用于竞赛中,提高涨点,减小方差


  • 与 bagging 的不同之处:

  • bagging 是用不同的数据(bootstrap 采样)训练相同类型的模型

  • stacking 是使用相同的数据训练不同的类型的模型


Stacking

Multi-layer Stacking(多层 stacking):


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

  • 每一层都可以使用不同类型的模型,模型可以完全不一样


  • L2 层的输入可以是只有 L1 层的输出,也可以把输入和 L1 层的输出组合起来作为 L2 层的输入。根据情况而定。

  • 多层的 Stacking 容易出现过拟合。因为:L1 层的输出已经被 L1 层的模型进行了一次特征提取,然后输出又输入到 L2 层,可能 L2 层会关注一些不重要的信息(比如:噪音),这样就会导致过拟合。


多层Stacking

减轻多层 Stacking 过拟合:


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

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


  • 重复 K 折 bagging 减轻过拟合:

  • 使用 K 折交叉验证,把数据集分成 K 份,每次训练模型时,K-1 份用来训练,第 K 份用来验证。也就是说每一层的每一个模型都训练了 K 个版本,每一层有 n 个模型,那么就训练了 k*n 个模型。重点:在 K 折交叉验证部分中,每一层每一个模型都会有 K 个版本,每一个版本都会做一次验证,并输出预测值,那么每一个模型总共会输出 原始数据集容量 个预测值。然后作为下一层的训练集。

  • 使用 K 折交叉验证,可以使下一层模型训练时使用完整的数据集进行训练。

  • 虽然使用了 K 折交叉验证,但是仍然会有过拟合

  • 如何解决过拟合?一个比较昂贵的办法:

  • 把上面的步骤重复 m 次,然后验证时的输出就会有三份,做平均之后,再作为下一层的训练集。


发布于: 刚刚阅读数: 2
用户头像

打工人!

关注

未来自动驾驶领域扫地僧 2019.11.10 加入

2021年InfoQ年度最佳内容获得者。 InfoQ签约作者 自动化和控制专业入坑人士,目前在研究深度强化学习(DRL)技术。学了Java,本来要入坑互联网,现在要入坑车联网了。喜欢了解科技前沿技术,喜欢手机摄影。

评论

发布
暂无评论
实用机器学习笔记二十三:集成学习之Stacking_学习笔记_打工人!_InfoQ写作平台