首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习工作流程(第1部分)

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

作者头像
花落花飞去
发布2017-12-22 16:24:44
1K0
发布2017-12-22 16:24:44
举报
文章被收录于专栏:人工智能人工智能

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

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

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

[img]
[img]

我们先来看看架构。我们从我们需要从中提取特征表示的原始数据(文档,图像,录音等)开始。特征提取是指将机器学习算法不能识别的原始数据转化为算法可以识别的特征的过程。(例如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工作流程。我打算详细解释每一个这些步骤的细节,每周都会发布一些新的职位(至少计划是这样)。更重要的是,请在这篇文章留下你的任何可以重塑或者讨论这个想法。如果有得话,请指证我的错误。

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

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

本文系外文翻译前往查看

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

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