摘要:本文分享了一份简单的关于开展机器学习的心得体会,目的是给初学者提供基本的指导,主要讲解了建立系统、选择合适的评价指标、数据处理、系统优化等内容,帮助初学者少走一些弯路。
这是一份关于开展机器学习的简短指南,以下为译文。
简单任务:
假设你有一个问题,并且你喜欢用机器学习来解决它,然后在现实项目中使用该系统。我喜欢简单分享下我的方法,目的是给初学者提供基本的指导并记录这些东西来提醒自己。
当遇到任何问题,首先有很多的学习算法,建立的大数据知识应用在针对某些特定问题的模型上,所有的这些想法都遵循以下三个阶段:
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,译者:海棠
本文为简译,更为详细的内容,请查看原文