为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 如何成为机器学习工程师

如何成为机器学习工程师

2017.05.08 14:41 20981浏览

你对机器学习感兴趣? 你不是一个人! 有好多的人每天都对机器学习感兴趣。但是,对机器学习感兴趣是一回事,实际上开始在现场工作是另一回事。 这篇文章将帮助您了解开始从事机器学习工程师工作的整体思维方式和具体技能。

首先,如果你正在考虑一个机器学习工程师的职业生涯,那么你应该明白两件非常重要的事情。 首先,这不是一个“纯粹的”学术角色。 你不一定要有研究或学术背景。 其次,只有软件工程或数据科学的经验还不够。理想的情况下,你需要同时拥有这两种技能。

数据分析师与机器学习工程师

了解数据分析师和机器学习工程师之间的差异也至关重要。简单来说,他们关键的区别与最终目标有关。作为数据分析师,您需要分析数据,以便讲述故事,并产生可操作的见解。重点是传播图表,模型,可视化。分析由人类执行并呈现给其他人,然后他们可以根据所呈现的内容进行业务决策。这一点尤为重要 - 您的输出的“观众”是人。另一方面,作为机器学习工程师,您的最终“输出”是工作软件(而不是您可能必须创建的分析或可视化),您的“受众”对于此输出通常由其他软件组件以最少的人力监督自主运行。产生出的智能仍然是可操作的,但在机器学习模型中,机器正在做出决策,影响产品或服务的行为。这就是为什么软件工程技能对于机器学习的事业来说非常重要。

理解生态

在进入具体的技能之前,还有一个要解决的概念。 作为机器学习工程师需要了解您正在设计的整个生态系统。

假设您正在为一家杂货连锁店工作,该公司希望根据以往购买客户的历史记录开始发行目标优惠券,目的是产生购物者实际使用的优惠券。 在数据分析模型中,您可以收集采购数据,进行分析以确定趋势,然后提出策略。 机器学习方法将是编写自动优惠券生成系统。 但是写这个系统需要什么,并且有效吗? 您必须了解整个生态系统的库存,目录,定价,采购订单,单据生成,销售点软件,CRM软件等。

最终,这个过程不太注重了解机器学习算法 - 或者什么时候和如何应用它们 - 而是更多地了解系统的相互关系,以及编写可以成功集成和提供接口的工作软件。 记住,机器学习的输出实际上是工作的软件!

现在,我们来了解一下机器学习工程师所需要的真实细节。 我们要将其分为两个主要部分:技能摘要,语言和库。 我们将在介绍技能摘要,然后在后续的手记中,我们将介绍机器学习的语言和库。

技能摘要

计算机科学基础对于机器学习工程师来说重要,包括数据结构(堆栈,队列,多维数组,树,图等),算法(搜索,排序,优化,动态规划等),可计算性和复杂性(P vs NP,NP完整问题,大O符号,近似算法等)和计算机体系结构(内存,缓存,带宽,死锁,分布式处理等)。

编程时,您必须能够应用,实施,调整或解决它们(如适用)。 练习问题和编码比赛是磨练你的技能的好方法。

  • 概率统计

概率(条件概率,贝叶斯规则,似然性,独立性等)和从其衍生的技术(贝叶斯网络,马尔可夫决定过程,隐马尔可夫模型等)的形式表征是许多机器学习算法的核心; 这些是处理现实世界不确定性的手段。 统计学领域提供各种措施(平均值,中位数,方差等),分布(统一,正态,二项式,泊松等)和分析方法(方差分析,假设检验等) 这是从观测数据建立和验证模型所必需的。 许多机器学习算法本质上是统计建模过程的扩展。

  • 数据建模和评估

数据建模是估计给定数据集的基础结构的过程,其目的是找到有用的模式(相关性,聚类,特征向量等)和/或预测以前看不见的实例(分类,回归,异常检测等)的属性。 这个估计过程的关键部分是不断评估给定模型的好坏。 根据手头的任务,您将需要选择适当的准确度/误差测量(例如分类的对数损失,回归的平方误差等)和评估策略(训练分析,顺序 vs.随机交叉验证等)。 迭代学习算法通常直接利用产生的错误来调整模型(例如神经网络的反向传播),所以理解这些措施相比于仅仅应用标准算法是非常重要的。

  • 应用机器学习算法和库

机器学习算法的标准实现通过库/包/ API广泛提供(例如,scikit-learn,Theano,Spark MLlib,H2O,TensorFlow等),但是有效地应用它们涉及选择合适的模型(决策树,最近邻,神经网络,支持向量机,混合模型等),拟合数据的学习过程(线性回归,梯度下降,遗传算法,bagging,boosting和其他模型特定方法),以及了解超参数如何影响学习。 您还需要了解不同方法的相对优点和缺点,以及一些其他的概念(偏差和方差,过拟合和欠拟合,缺失数据,数据泄漏等)。 数据科学和机器学习的挑战,如Kaggle的挑战,是一个接触不同种类的问题及其细微差别的很好的方式。

  • 软件工程和系统设计

在任务结束时,机器学习工程师的典型输出或可交付成果是软件。 通常它是一个适合更大的产品和服务生态系统的小部件。 您需要了解这些不同的部分如何协同工作,与他们进行沟通(使用库调用,REST API,数据库查询等),并为您的组件构建适合的接口以供其他人依赖。 这可能需要谨慎的系统设计以避免瓶颈,并且随着数据量的增加,您的算法可以很好地扩展。 软件工程最佳实践(包括需求分析,系统设计,模块化,版本控制,测试,文档等)对于生产力,协作,质量和可维护性是无价的。

机器学习的未来

机器学习最有说服力的是它似乎无限的适用性。机器学习已经让很多领域受到了影响,包括教育,金融,计算机科学等。几乎没有机器学习不适用的领域。在某些情况下,实际上很迫切需要机器学习技术。医疗保健是一个明显的例子。机器学习技术已经应用于医疗保健领域的关键领域,已经影响了从护理学到医学扫描分析的一切。

世界毫无疑问地以快速和戏剧性的方式发生变化,机器学习工程师的需求将呈指数级增长。 这个世界的挑战很复杂,需要复杂的系统来解决它们。 而机器学习工程师正在构建这些系统。 如果这是你的未来,那么请抓紧一切时间开始掌握这些技能吧。

点击查看更多内容
103人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
数据科学家
手记
粉丝
816
获赞与收藏
281

关注TA,一起探索更多经验知识

作者相关文章
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消