让你少走弯路:这有一份开展机器学习的简短指南

摘要:本文分享了一份简单的关于开展机器学习的心得体会,目的是给初学者提供基本的指导,主要讲解了建立系统、选择合适的评价指标、数据处理、系统优化等内容,帮助初学者少走一些弯路。

这是一份关于开展机器学习的简短指南,以下为译文。

简单任务:

假设你有一个问题,并且你喜欢用机器学习来解决它,然后在现实项目中使用该系统。我喜欢简单分享下我的方法,目的是给初学者提供基本的指导并记录这些东西来提醒自己。

当遇到任何问题,首先有很多的学习算法,建立的大数据知识应用在针对某些特定问题的模型上,所有的这些想法都遵循以下三个阶段:

1定义基于度量的目标

2建立系统

3用更多的数据优化系统

下面查看这些步骤的更多细节

定义目标和指标

人类水平VS可接受

第一件事情,是需要从系统性能中调整预期质量。我们所期望的人类水平的表现,如果它是医疗诊断系统,或者它是一个简单的移动应用程序,我们可能更喜欢成本较低的。这一决定定义了系统的成本(时间,金钱和工程)。当我们增加期望时,也需要投入更多的成本。

什么指标用于度量

针对面临的相关问题,定义合适的指标衡量系统性能。它应该匹配问题的性质。可能的选择是以下这些;

l精确-目标分类

l复查-医疗诊断

l大量错误-房屋租赁价格预测

lF评分-文献分类分类

定义合适的指标会造成巨大的特性差异。它涉及在你开发解决方案的人工环境中了解用户(或客户)和找到用户的选择的匹配标准过程。

建立系统

创建基线ASAP

不要试图设计出没有时钟的时间机器。首先设计有着任何工具和算法、易于使用和实现的最小可行的系统。将这个定义为基线。基线对于显示你的增益什么而言是有用的,无论它是显著性、随机性或者其它。

改善基线

当基线系统完成后,就可以开始向里添加内容。遵循一些渐近的步骤会使得事情更容易跟随,那么当一些事情不像预期那样工作,也容易进行备份。不要浪费时间在最先进的空间技术水平,如果数据有需求,那么就竭力获得更高级的方法。

例如,针对你的问题,并不总是直接使用ImageNet胜利者的初始网络就是正确的选择。基于对数据的观察后再定义你的模型结构。在一般情况下,如果噪声和数据是易于分离的,那么可以使用较浅的模型。噪声减小并且数据结构增加就需要去采取更深更宽的模型。

更深与更宽模型之间的差别在于:更深层次的模型更好地捕捉到更高层的抽象特征,这些对于区分特别不同的类别(汽车VS马)而言是非常重要;更宽的模型更好地处理精细的问题,比如处理类别之间非常接近、只有轻微的共性区分(猫的种类)。

模型的种类

基于你的问题,有更好的机器学习模型的子集,这些模型也可能用于其它问题,但最好始终保持模型的性质和问题的性质相一致。

l原始数据——>全连接网络(MLP)

l空间数据(图像)——>卷积网络

l时间、序列数据——>递归神经网络(LSTM,RNN,GRU)

提炼数据

假设你完成你的系统后并取得了很好的结果,但这不是结束,仍然有相关工作需要做:

不要相信数字

虽然之前总是基于受控环境中的度量值来衡量成功。但这些值可能不是现实世界中的指标,因为数据可能会改变或者用户可能会改变。因此,在初始应用后要经常检查系统的性能。做A / B测试,用实时数据检查指标值,并使用实际值验证你的假说。

更新最新的数据

如果能够及时获得更多的数据并总用它来更新和调整模型,更多的数据一定会提高性能。不要跳过这一过程,因为随着越来越多的数据更新系统,你甚至可以达到难以想象的结果。这也是像谷歌这样一类大公司的技巧。他们真的熟练使用并运行数据以提高他们的产品。

最后一句话

这篇文章中,跳过了很多内容,比如训练模型,发现其缺陷并进行修改,重复这一过程以提升性能,你可以看另外一篇文章查看具体的细节。

本文由阿里云云栖社区组织翻译。

文章原标题《Short guide to deploy Machine  Learning》,作者:EROGOL,译者:海棠

本文为简译,更为详细的内容,请查看原文

你可能感兴趣的:(让你少走弯路:这有一份开展机器学习的简短指南)