ML工作流程(第4部分) - 完整性检查和数据分割

本译文自EROGOLhttp://www.erogol.com 上发表的 ML Work-Flow (Part 4) – Sanity Checks and Data Splitting ,文中版权、图像代码的数据均归作者所有。为了本土化,本文略作修改。

完整性检查

我们现在比特征提取领先一步,并且提取给定的原始数据的统计上重要的(协变量)表示。在特征提取之后,我们需要做的第一件事就是检查新的表示的值。通常,人们会认为这是浪费时间,不会去做这个事情。不过,我认为这是一个严重的错误。正如我之前所说的那样,单个NULL值或倾斜表示可能会在最后让人非常的头疼,并且会使你处于非常模糊的状态。

我们开始讨论。我在这里列出我的合理的检查步骤;

检查NULL值并探究为什么它们是NULL - NULL值是信息,即使他们破坏了你ML管道。它们是前面阶段引发的问题的指标。因此,在更深入地研究问题之前,这些NULL值能够帮助你提前解决这些问题。

如果你在特征抽取后观察到NULL值,则需要考虑一些常见问题;

  • 美联储数据不符合特征提取算法的预期格式。顺便说一下,特定的特征提取方法需要对原始数据进行一定的常规化、标准化、缩放程序或者可能需要通过离散化,分类等来更改值类型。我将在Feature Preprocessing阶段讨论这些特定的过程,但是之前有一些案例,但是还是建议:如果你的数据格式没有问题,那么可以考虑使用不同的代码来提取特征,并将结果与第一个结果进行比较。如果有错误,而且不一致,那就用第三个代码纠正错误。一定要确认算法是正确适用的。如果不是这样,每次运行你都可能观察到不同的值,这是合理的。在这种情况下,最好以某种方式可视化这些特征,并尝试看到预期的语义。例如,对于计算机视觉环境下的特征学习方法,显示学习过滤器并证明视觉正确性。对于其他领域,通过社区进行研究,并找到一个方法来做到这一点。
  • 你的ETL工作流程是错误的。ETL是通过一些软件或简单的代码流合并来自不同资源的数据的过程。这个过程应该适应数据资源的内部变化。例如,如果合并来自两个不同数据库的数据,则表中的结构更改可能会使你的ETL过程崩溃,并导致新的NULL值。这对我来说也是一个非常频繁的经历。因此,ETL需要能够正确的处理或者至少应该记录这样的问题。
  • 零分 检查值的比例。最大值和最小值、框图、散点图、平均值 - 中值差异对于指吃偏差值是非常有用的。绘制这些并观察它们是否合理。如果有觉得哪些地方错误的,那就研究它。这可能需要一定程度的专业知识。 检查每个维度的唯一值的数量。 这听起来很愚蠢,但相信我,这是一个非常有用的检查值的方法。即使你的数据是分类的、名义上的或连续的,总是非常有用。绘制一个条形图,描绘每个数据维度的不同值的数量。数据分割好的,我们纠正了特征提取后数据表示的正确性。现在是时候将数据分割成测试,训练和可选的外展和验证集。
  • Train-Set:用这个训练你的模型。
  • Validation-Set:使用特定的算法,如神经网络,更好地使用单独的Validation-Set以便查看训练周期中的泛化性能。由于这些算法很可能过度拟合,所以使用训练数据作为训练时间的唯一度量可能会误导到极端的过度拟合。相反,使用每个迭代性能的Validation-Set,并停止训练和验证值在某个级别分散。Validation-Set的另一个用例是在交叉验证不可扩展的情况下用于性能测量。如果你使用低预算系统的BigData,那么简单的交叉验证需要几天或几周的时间。因此,对于简单的实验,如果只是第一次进行简单的设置或者更改,那么请使用Validation-Set。当你得到这些价值并作出最初的决定后,你就使用Validation-Set和验证数据混合的交叉验证。我推荐这么做。
  • Test-Set:在Train-Set和Validation-Set之后完成模型之后,应该使用它。根据训练和验证步骤设置模型的所有参数后,Validation-Set会测量性能。由于你重复循环训练和验证,所以你的模型不仅可能过度训练数据,而且还会验证数据。从这个角度来说,Validation-Set显示了你的理性过度的水平。这就是为什么大部分Kaggle比赛只用最终的表现来模拟我们Validation-Set的概念。
  • Held-Out Set:这可能是其他集合的组合。但是,最好的办法是使用纯粹独立的数据,除非数据不足。最后,在你说“我完成了!这是我的杰作“。因此,你在这个集合上测量你的模型的最终得分,这是现实世界场景中最好的性能近似。既然你之前没有触及过,而且你没有通过这个集合重申你的模型,那么你的模型就没有看到Held-Out集合的偏见。因此,这是你的报告的最终绩效衡量标准。

我相信很多人对我提出的数据分割方案不太情愿,他们会把这个粒度级别看作简单的训练,测试分割+交叉验证方案。但是,我向他们保证,特别是在这个行业里,这个阵型是对抗理性过度合理化的最佳选择。通过这些论点的特性,我也相信目前数据分裂的概念是学术界的一个重要关键。我们接触到所谓的最先进的方法,以非常精确的数据和合理的过度拟合的方法来说明非常高的准确度。但就这个事实而言,当我们将这些方法应用于实时问题时,值就会变得太多而变得不真实。是,模型可能会过度适合给定的列车数据,但是只使用有限的数据集,并且有一定的训练和验证周期,也会使你错误地理解给定的问题。理性过度拟合的一个例子是神经网络结构图像网竞赛。如果你看看论文或者每年的方法,你会发现人们仍然使用亚历克斯网络(Image-Net的第一个重要的深度学习成就)相同的拓扑结构,并且宣布0.5%的提高,而且方法上的改进很少或者很少。顺便说一句,我们有一个深度学习社区过度适合Image-Net的巨大文献。我的解决方案是使用单独的数据集,通过去年数据集的训练模型对每年的比赛进行排名。在我看来,对于这种过度拟合,这将是一个更强大的调整,具有更多的注释复杂性。

原文链接:http://www.erogol.com/ml-work-flow-part-4-sanity-checks-data-spliting/

原文作者:EROGOL

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

支持向量机简介

在Statsbot团队发布关于时间序列异常检测的帖子之后,许多读者要求我们向他们介绍支持向量机的方法。现在是向您介绍SVM(支持向量机)的时候了,而不用您辛苦的...

2087
来自专栏人工智能LeadAI

伪标签半监督学习

之前在训练YoutubeNet和DCN的时候,我都发现平台用户中基础用户的信息数据缺失率特别高,比如性别一栏准确填写的不足60%,所以我一直想调研一下有没有什么...

942
来自专栏量子位

Tensorflow官方语音识别入门教程 | 附Google新语音指令数据集

李林 编译整理 量子位 报道 | 公众号 QbitAI Google今天推出了一个语音指令数据集,其中包含30个词的65000条语音,wav格式,每条长度为一秒...

6178
来自专栏机器之心

从三大神经网络,测试对比TensorFlow、MXNet、CNTK、Theano四个框架

选自data science central 机器之心编译 参与:蒋思源 本文比较了 Keras 支持的主流深度学习框架性能,包括 TensorFlow、CNT...

2937
来自专栏机器之心

入门 | 极致的优化:智能手机是如何处理大型神经网络的

1606
来自专栏AI科技评论

开发 | 如何加速神经语言模型训练?东北大学小牛翻译团队有妙招

团队简介:东北大学自然语言处理实验室(小牛翻译团队)由姚天顺教授于1980年创立,长期从事机器翻译及语言分析方面的研究。小牛翻译团队所研发的NiuTrans系统...

32613
来自专栏人工智能

小白入门最简单的机器学习算法

阅读本文大概需要3分钟 菜鸟独白 上一篇(菜鸟学机器学习启航篇)对机器学习做了初步的介绍,机器学习的算法有很多,小白开始学习的时候,往往会被弄晕。有没有比较简单...

2509
来自专栏机器之心

ICLR 2018 | 斯坦福大学教授Christopher Manning提出全可微神经网络架构MAC:可用于机器推理

选自arXiv 作者:Drew A. Hudson、Christopher D. Manning 机器之心编译 参与:刘天赐、黄小天 现今,神经网络已在图像识别...

3008
来自专栏机器之心

专访 | MATLAB更新R2017b:转换CUDA代码极大提升推断速度

机器之心原创 作者:蒋思源 近日,Mathworks 推出了包含 MATLAB 和 Simulink 产品系列的 Release 2017b(R2017b),该...

4119
来自专栏量子位

谷歌开源集成学习工具AdaNet:2017年提出的算法终于实现了

最近,谷歌在GitHub上发布了用TensorFlow实现的AutoML框架——AdaNet,它改进了集成学习的方法,能以最少的专家干预实现自动习得高质量模型。...

822

扫码关注云+社区