机器学习工作流程(第1部分)

本译文自 EROGOL 发表在 http://www.erogol.comMachine Learning Work-Flow (Part 1),文中版权、图像代码等数据均归作者所有。为了本土化,翻译内容略作修改。

到目前为止,我打算编写一系列的文章来讲解基本的机器学习工作流程(主要是监督学习)。在这篇文章中,我的目标是提出鸟瞰图,我将在后面的章节中详细讲解每个组件。我决定写这个系列有两个原因; 第一个原因是经过一段时间的理论研究和工业实践,我想把把所有学到的东西都整理到一起;第二个是给初学者和爱好者提供一个简单的指南。

下面,我们对题目所提到的工作流程进行概述。我们用颜色来区别每个区域。每个盒子的色调都是从黄色红色 。黄色盒子的颜色越深,说明在这个盒子里的组件越倾向于统计知识库。同样红色盒子越深(变暗),盒子里的组件更倾向于机器学习知识库。通过这样说之后,也就意味着,如果没有很好的统计和理解,我们就无法构建一个方便的机器学习通道。作为一个脚注,这个模式被后现代主义的表示学习算法所改变,我将在后面的文章中谈到这一点。

我们先来看看架构。我们从我们需要从中提取特征表示的原始数据(文档,图像,录音等)开始。特征提取是指将机器学习算法不能识别的原始数据转化为算法可以识别的特征的过程。(例如Bag Of Words表示将每个不同长度的文档转换成相同长度的向量表示)

下一步的Sanity-Check是确保特征值的质量和便利性。我相信每一个ML课程和社区都会忽视这一步。但是,现阶段的任何错误都是非常致命,因为它们太难修复。例如,你做的一切都是正确的,但是最终的预测精度与预期都低于期望值。于是你一遍又一遍地调试所有的管道,但是就是没找到错误的地方。然后在几个小时之后,您在第2965个特征向量处实现了空值。然后你就草了。我敢非常肯定,如果你在这个领域有一定的经验,那么你肯定遭遇过相同或者类似的情况。

之后; 我们需要将我们的数据解析、训练、验证以及保留集合。此步骤与模型培训评估步骤中的方法相关。例如,如果您希望在模型训练部分使用神经网络,并且进行交叉验证评估,那么这可能是最好的选择。使用具有K倍交叉验证的训练数据进行训练和超参数优化,然后用验证数据断言最终模型。在最后阶段使用保留集合来进行最终的性能量化。

特征预处理是与ML模型相关的另一个模块。在这一步,我们将训练数据转换成适合ML算法规范的数据。例如,SVM要求平均值= 0,标准偏差= 1。如果你忘记数据的预处理,你很可能会看到ML算法有非常奇怪的行为。也许花费太长时间来调整模型权重,这样你得到值可能有在一个有趣的范围内波动。此外,不要忘记在预处理之后全面性的检查。例如,为了规范化,将得到的值频繁的除以0,很显然得到值是空的

模型训练 是有趣的部分。你有一堆算法正在等待被使用。不幸的是,这在整个工作流程中只占5%。但从执行的角度来看,这是迄今为止最浪费时间的一步。在这一步常见的错误之一没有任何的推理就使用随机的使用算法。这就像在大海捞针一样。使用算法,就应该对症下药。损失函数,学习算法,正则化项和其他参数的选择完全是问题特定的。我将在接下来的文章中进一步解释... 模型训练 包括超参数优化和对数据的首次洞察,以及前面步骤的质量。例如,假设您使用网格搜索进行K-fold交叉验证的参数选择,并且您观察到每个不同候选值的每个折叠的得分都非常不同。这是训练数据不足或特征表示不恰当的早期指标。那么你需要再来一次。

模型评估 测量你最近训练过的模型在验证集上的质量,这在以前的任何步骤中都没有涉及到。首先,我们也使用同样的方法对数据进行预处理,然后我们输入模型。这个步骤是根据质量测量(ROC,RMNS,F-Score)的选择来定义的,假定与用于训练的测量相同。请记住,不同的措施会为您的模型提供不同的思路。

不要把你的训练模型扔掉。假设您训练了5个性能差距较小的不同神经网络,然后 用平均值,最大值或任何其他投票架构进行集成。你可以看看Kaggle的获胜者,他们中的大多数神经网络,都是支持向量机或随机森林(es)的集合。他们甚至在集合中也使用差的模型。这是因为范围越大,对于你的模型集合也越好。这里有一些限制。考虑最终模型的运行时期望。当你增加你的集合的大小,计算和内存的需求也增加。我们在这里讨论可扩展性与准确性的权衡。也许最好的例子就是100万美元的Netflix挑战 Netflix由于可伸缩性问题而没有实现赢家算法。

现在,我们正在最后一步。完了,就可以关掉你的电脑。测量你的最终模型(模型集合)的性能与外出的设置。不要忘记预处理,就像验证和训练集一样。这是表明最终模型的真实生活表现的最关键的一步。如果您的测量结果与验证数据不一样,则意味着您的集成模式没有起到左右,你就要对它进行更改。但是,请确保以前没有任何错误,从所有可能的角度来看,所有的集合模型都非常有可能。否则,在这一步糟糕的表现会让你处于一个非常危险的境地,根据任何一个步骤的任何模型,有许多不同的组合缺陷。

这是暂时的。我试图用少量的细微差别来解释我提出的ML工作流程。我打算详细解释每一个这些步骤的细节,每周都会发布一些新的职位(至少计划是这样)。更重要的是,请在这篇文章留下你的任何可以重塑或者讨论这个想法。如果有得话,请指证我的错误。

原文链接:http://www.erogol.com/machine-learning-work-flow-part-1/

原文作者:EROGOL

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

春节充电系列:李宏毅2017机器学习课程学习笔记02之Regression

【导读】我们在上一节的内容中已经为大家简介了台大李宏毅老师的机器学习课程内容,本节我们开始跟大家聊一聊其中的具体技术。今天我们要介绍的就是回归分析(regres...

37910
来自专栏数据派THU

手把手教你从零搭建深度学习项目(附链接)

本文共1万+字,建议阅读10+分钟。 本文将会从第一步开始,教你解决项目开发中会遇到的各类问题。

553
来自专栏数据派THU

手把手教你从零到一搭建深度学习项目

在学习了有关深度学习的理论之后,很多人都会有兴趣尝试构建一个属于自己的项目。本文将会从第一步开始,告诉你如何解决项目开发中会遇到的各类问题。

1003
来自专栏目标检测和深度学习

如何从零开始构建深度学习项目?这里有一份详细的教程

选自Medium 作者:Jonathan Hui 机器之心编译 在学习了有关深度学习的理论课程之后,很多人都会有兴趣尝试构建一个属于自己的项目。本文将会从第一步...

3448

5种无需数学背景也可理解机器学习算法的技巧

在一种自顶向下的研究机器学习的方法中,理论应立足于何处?

26810
来自专栏机器之心

深度 | DeepMind提出神经元删除法:通过理解每个神经元来理解深度学习

选自DeepMind 机器之心编译 近日,DeepMind 发表博客介绍其对神经网络可解释性的最新研究成果。受神经科学启发,他们通过删除神经元来探索其对网络性能...

3155
来自专栏CSDN技术头条

Netflix工程总监眼中的分类算法:深度学习优先级最低

【编者按】针对Quora上的一个老问题:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain近日给出新的解答,他根据奥卡姆剃刀原...

1895
来自专栏机器学习和数学

[深度学习] 我理解的循环神经网络RNN

本来今天在写毕业论文,就不打算更新了,但是写毕业论文挺痛苦的,因为我发现毕业论文的文字不能像公众号这样比较随意,随意的文字不是说不严谨,而是为了便于大家理解,这...

3019
来自专栏人工智能头条

基于Kaggle数据的词袋模型文本分类教程

1062
来自专栏机器之心

如何从零开始构建深度学习项目?这里有一份详细的教程

选自Medium 作者:Jonathan Hui 机器之心编译 在学习了有关深度学习的理论课程之后,很多人都会有兴趣尝试构建一个属于自己的项目。本文将会从第一步...

3248

扫码关注云+社区