作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


(一)机器学习中的集成学习入门

(二)bagging 方法

(三)使用Python进行交易的随机森林算法

(四)Python中随机森林的实现与解释

(五)如何用 Python 从头开始实现 Bagging 算法

(六)如何利用Python从头开始实现随机森林算法

(七)AdaBoost 简介

(八)Python 中的 AdaBoost 分类器实例

(九)AdaBoost 中参数对于决策边界复杂度分析

(十)stacking 简介


集成学习通过组合多种模型来改善机器学习的结果,与单一的模型相比,这种方法允许产生更好的预测性能。这就是为什么在许多著名的机器学习竞赛中,集成学习方法总是被优先考虑。集成学习属于元算法,即结合数个“好而不同”的机器学习技术,形成一个预测模型,以此来降方差(bagging),减偏差(boosting),提升预测准确性(stacking)。今天,我们来学习的就是其中一个技术 stacking 方法。

如果你的模型没有达到 50% 的正确率,并且你经常发现自己将机器学习模型调整到凌晨,但是你又只能提高一点点的性能。那么,这篇文章非常适合你。

什么是模型堆叠?

模型堆叠是一种数据科学基础方法,它依赖于多个模型的结果,即将多个弱学习器的结果进行组织,往往胜过单一的强模型。过去几年中大多数主要 kaggle 比赛的获胜者在最终获奖模型中都使用了模型堆叠。

堆叠模型类比于现实世界的例子,就比如商业团队,科学实验,或者体育团队。如果团队中的所有成员都非常擅长完成同样的任务,那么团队就会摧毁任何需要这个任务的挑战。

在现实中我们如何实践?

下面你可以看到一个最近的主要 kaggle 比赛的最佳获奖模型的例子:

注意:拥有足够数量的数据以执行强大的模型堆栈非常重要。为了避免过度拟合,你需要在每个堆叠(训练阶段)进行交叉验证,并将一些数据作为测试阶段的数据,在训练集和测试集上面保证模型的性能之间没有太大的差异。

  • 初始阶段:你运行各种不同的独立模型,并花一些时间分析其各自的性能指标,并考虑某些模型可能比其他模型做的更好的地方。
  • 阶段一集成:你选择这些模型的小团队,确保其预测系数之间的相关性较低,以确保你的 stacked model 允许较弱链接之间的大量交叉学习。你可以获取预测的平均值并构建一个新表,该表将在第 2 阶段输入一个新的较小的模型团队。
  • 阶段二集成:你运行新的模型集合,它将使用阶段 1 中的平均预测度量作为要素,以便了解有关原始变量之间关系的新信息。
  • 阶段三集成:你重复相同的过程,将阶段二中的模型的平均预测提供给最终的“元学习器”模型,该模型应该经过精心挑选,以适应你尝试解决的问题类型。在上面的示例中,比赛者使用线性回归作为最终模型,因为这可能是在初始阶段作为独立模型表现最佳的模型之一。
我们都应该试试吗?

绝对!!对于我的第一次模型堆叠实验,我决定扩展我最新的数据科学项目,这是一个自然语言处理模型,旨在从歌词中预测歌曲的类型。对于该项目,我们预处理了来自八种不同类型的 16000 首歌词列表:嘻哈,乡村,流行,摇滚,金属,电子,爵士和R&B。我们确保在我们的数据集中包含每种类型的 2000 首歌曲,以避免类不平衡的问题。第一步是运行各种基本模型,其预测方法之间的相关性较低,以便能够相应的构建我们的模型堆叠块,请看下面的结果:

接下来,我们决定采用前3个模型并通过广泛的 GridSearch 进行一些超参数优化,以便了解我们的顶级独立模型可以实现的最高精度。结果如下:

正如你从下面的图表中看到的那样,我们的最佳表现达到了 50%,咋一看似乎不是很高,但考虑到我们的模型视图预测一首歌属于哪种类型。而我们这个准确性已经是随机猜测的四倍了。这意味着大约一半的时间,我们的模型准确的预测了一首歌的类型,仅基于该歌曲的歌词,并且在超过3000首歌曲的测试集上达到了 50% 的测试准确度,这个结果已经相当好了。

首先,我选择结合并平均我的三个最弱学习器的预测:随机森林,adaboost和KNN分类器,并构建一个新的数据框架,我可以提供给我们最强大的学习器。代码如下:

上表中的每一列是八个类型中的每一个的平均预测系数,并且每一行是具有对应的真实类型的歌词,存储在作为类标签列表的单独的 y 变量中。

接下里,我将数据分为训练集和测试集,并且运行模型堆栈的第二阶段,我的强学习器:GradientBoost 和朴素贝叶斯,使用来自弱学习器的组合预测来生成一组新的预测。然后,我将第二阶段的预测结果合并到一个最终的数据框架中,我希望将其提供给我的最终元学习器:NN。

我选择使用神经网络进行模型堆叠的最后阶段,因为 NN 往往在多分类问题上表现很好,并且 NN 非常善于找到隐藏特征并找出依赖变量和自变量之间的复杂关系,我使用 softmax 作为输出层激活函数,因为我们师徒预测八个类别,最终结果如下:

最后的想法

当我在我最初的 NLP 项目中看到这个模型堆叠实验的结果时,我是非常惊讶的,80% 的正确率是在测试数据集上面产生的,该测试数据由 NN 模型以前从未见过的 3600 首歌词组成。交叉验证的训练准确率达到 86% 也是非常令人印象深刻的,让我特别高兴的是训练集和测试集上面没有显著差异,这是非常好的。

我多次检查我的代码和数学,以确保我的交叉验证和训练/测试在每个阶段都有效,因为性能提升 30% 似乎有点不太可能。但我找不到任何我的代码中的错误。因此,我对使用模型堆叠的第一次尝试感到非常高兴。

(十)stacking 简介相关推荐

  1. c语言修仙一十四洲简介,《C语言修仙·下》编辑推荐、内容简介及作者一十四洲简介...

    <C语言修仙·下>编辑推荐.内容简介及作者一十四洲简介 <C语言修仙·下>编辑推荐 ● <C语言修仙>是晋江超人气作者一十四洲未来幻想力作,也是晋江完结金榜作品,截 ...

  2. 凭技术可以受欢迎,但想得到尊重要有灵魂——Leo简历工作室 蓝血十杰简介

    "Leo工作室的核心团队"--蓝血十杰是谁? 他们是我的好朋友,他们都是来自HR和研发相关领域的资深人士.我在提点简历时,遇到自己解决不了的HR或者技术问题会向他们请教,得到他们的 ...

  3. 凭技术可以受欢迎,但想得到尊重要有灵魂——Leo简历工作室“蓝血十杰简介”...

    "Leo工作室的核心团队"--蓝血十杰是谁? 他们是我的好朋友,他们都是来自HR和研发相关领域的资深人士.我在提点简历时,遇到自己解决不了的HR或者技术问题会向他们请教,得到他们的 ...

  4. 凭技术可以受欢迎,但想得到尊重要有灵魂——Leo简历工作室“蓝血十杰简介”

    "Leo工作室的核心团队"--蓝血十杰是谁? 他们是我的好朋友,他们都是来自HR和研发相关领域的资深人士.我在提点简历时,遇到自己解决不了的HR或者技术问题会向他们请教,得到他们的 ...

  5. 【Machine Learning】模型融合之Stacking

    一.Stacking简介   Stacking(stacked generalization)是在大数据竞赛中不可缺少的武器,其指训练一个用于组合(combine)其他多个不同模型的模型,具体是说首先 ...

  6. 从零实现机器学习算法(八) Stacking

    目录 1. Stacking简介 2. Stacking模型 2.1 第一层模型 2.2 分类规则 3. 总结与分析 1. Stacking简介 Stacking和上一篇的Blending都是模型融合 ...

  7. 天才基本法_强推|高人气合集狙击蝴蝶天才基本法春日玛格丽特难哄

    1 书名:<狙击蝴蝶> 作者:七宝酥 简介: 李雾高考结束后,岑矜去他寝室帮忙收拾行李. 如果不是无意打开他抽屉,她都不知道自己曾丢失过一张两寸照片. - 所谓狙击,就是埋伏在隐蔽处伺机袭 ...

  8. DTAS3D 三维公差分析与尺寸链计算软件-AI自动建模案例

    AI逞威!火箭电控器数百装配&测量自动创建!仅需十分钟 简介:公差计算软件.公差分析软件.公差带计算软件.尺寸链计算.尺寸链公差分析.尺寸链分析与计算.尺寸链分析软件.尺寸公差软件.尺寸公差分 ...

  9. 解职场困惑不必东奔西走,Leo这里应有尽有(更新至09年8月31日)——Leo文章索引

    最近整理文章把自己吓了一跳,在Csdn发表了200多篇文章,总字数超过10万.文章涉及了职业规划的方方面面,从求职.劳动法再到离职:从入职第一天的喜悦到被裁员的痛.虽然相对比较有体系但因为文章有一定数 ...

最新文章

  1. iOS开发-登录界面开发(6)Toast-Swift的使用-Swfit4.1_Xcode9.3.1
  2. SQL SERVER 判断是否存在并删除某个数据库、表、视图、触发器、储存过程、函数
  3. 深入理解javascript原型和闭包(7)——原型的灵活性
  4. mac 下的实用工具总结
  5. 华为机试HJ3:明明的随机数
  6. [转载] python基础:面向对象-封装
  7. Cache缺失率的计算原理
  8. Nacos整合SpringCloud的自动注册原理
  9. RedHat红帽RHEL7安装与使用,VMware Workstation16 Pro虚拟机的安装与使用
  10. Zune无法连接手机的解决办法
  11. 升级macOS Big Sur 后 HIDPI 失效的解决办法
  12. abab的四字成语_带abab的四字成语大全
  13. selenium提示geckodriver‘ execut解决办法
  14. ps软件1.基础工具2.工具快捷键3.图片基本操作4.撤回方法5.抠图
  15. 汉字如何应用在平面设计中
  16. ultraISO如何把ISO镜像文件加载虚拟光驱
  17. [数据分析笔记] 网易云歌单分析系列02—pyecharts柱状图
  18. php自动填表单,vb实现网页自动填表
  19. 立创EDA之过孔盖油
  20. PADS中环型焊盘(锅仔片)封装的建立

热门文章

  1. Recyclerview 实现双联表联动
  2. java jce_了解Java JCE的加密
  3. vbs脚本——检测U盘插入拨出并通过邮件报警
  4. ubuntu 9.10 wine qq 2009 亲身体验,爽!
  5. python 交互式编程与脚本式编程
  6. PCB布局布线经验总结2021年2月5日
  7. 三菱数据移位指令_三菱移位指令的应用
  8. vue 中v-if和v-for一起使用;p标签中可以放p标签吗?
  9. 女星拍戏尴尬经历 李冰冰水中拍戏来大姨妈
  10. 转载:: 完全用命令行工作-4: 苹果图形界面脚本化