前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ML工作流程(第4部分) - 完整性检查和数据分割

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

作者头像
花落花飞去
修改2017-12-25 15:20:41
6990
修改2017-12-25 15:20:41
举报
文章被收录于专栏:人工智能人工智能

本译文自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的巨大文献。我的解决方案是使用单独的数据集,通过去年数据集的训练模型对每年的比赛进行排名。在我看来,对于这种过度拟合,这将是一个更强大的调整,具有更多的注释复杂性。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 完整性检查
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档