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 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

IBM高级研发工程师武维:如何分布式训练深度学习模型?| 分享总结

AI 研习社按:随着深度学习神经网络规模越来越大,训练一个深度神经网络(Deep Neural Networks, DNNs)往往需要几天甚至几周的时间。为了加...

2665
来自专栏应兆康的专栏

18. Eyeball和Blackbox开发集应该多大?

你的 Eyeball 开发集应该足够大,大到可以让你了解到算法的主要错误类别。如果你正在从事一项人类可以表现很好的任务(如识别图像中的猫咪),下面是一些指导方...

3018
来自专栏人工智能LeadAI

算法训练和模型部署如何避免多次重写数据预处理代码

前段时间,我们对接算法的工程师哭丧的和我说,模型生成后一般都要部署成API的形态对外提供服务,但是算法工程师并没有提供如何将一条数据转化特征向量的方法,他能拿到...

875
来自专栏机器之心

「人工智能研学社· ML系统与架构小组」第一期:如何在单块GPU上训练超大型深度学习模型

机器之心原创 人工智能研学社 问题:GPU 内存限制 GPU 在深度神经网络训练之中的强大表现无需我赘言。通过现在流行的深度学习框架将计算分配给 GPU 来执...

2979
来自专栏PaddlePaddle

【AI核心技术】课程八:卷积网络简介

UAI与PaddlePaddle联合推出的【AI核心技术掌握】系列课程持续更新中!

673
来自专栏DevOps时代的专栏

Youtube 短视频推荐系统变迁:从机器学习到深度学习

本人最近系统的看了 youtube 推荐相关的论文,觉得非常有收获,所以整理小文以飨读者;“它山之石可以攻玉” ,希望可以给大家带来帮助和启发。

3.7K2
来自专栏FreeBuf

用机器学习玩转恶意URL检测

前段时间漏洞之王Struts2日常新爆了一批漏洞,安全厂商们忙着配合甲方公司做资产扫描,漏洞排查,规则大牛迅速的给出”专杀”规则强化自家产品的规则库。这种基于规...

5339
来自专栏Y大宽

WGCNA关键模块和hub基因筛选

WGCNA的理论背景知识 WGCNA的详细分析流程 关键模块和hub基因筛选,在流程中并不可知 模块划分好后如何找到key module

642
来自专栏祝威廉

算法训练和模型部署如何避免多次重写数据预处理代码

前段时间,我们对接算法的工程师哭丧的和我说,模型生成后一般都要部署成API的形态对外提供服务,但是算法工程师并没有提供如何将一条数据转化特征向量的方法,他能拿到...

612
来自专栏人工智能

机器学习工作流程(第2部分) - 数据预处理

尽量保持我承诺的日期。下面详细介绍了我提出的机器学习工作流程的第一步讨论,即数据预处理。

2310

扫码关注云+社区