前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实际工作中,算法工程师需要哪些技能?

实际工作中,算法工程师需要哪些技能?

作者头像
统计学家
发布2020-02-20 12:59:52
6230
发布2020-02-20 12:59:52
举报

对机器学习感兴趣是一回事,实际上开始在现场工作是另一回事,实际中,真正开始从事机器学习工程师工作的整体思维方式和具体技能,又是怎样的呢?

需要了解

如果你正在考虑一个机器学习工程师的职业生涯,那么你应该明白两件非常重要的事情。

首先,这不是一个“纯粹的”学术角色。你不一定要有研究或学术背景。

其次,只有软件工程或数据科学的经验还不够。理想的情况下,你需要同时拥有这两种技能。

了解数据分析师和机器学习工程师之间的差异也至关重要。简单来说,他们关键的区别与最终目标有关。作为数据分析师,您需要分析数据,以便讲述故事,并产生可操作的见解。重点是传播图表,模型,可视化。分析由人类执行并呈现给其他人,然后他们可以根据所呈现的内容进行业务决策。这一点尤为重要 - 您的输出的“观众”是人。

另一方面,作为机器学习工程师,您的最终“输出”是工作软件,您的“受众”对于此输出通常由其他软件组件以最少的人力监督自主运行。产生出的智能仍然是可操作的,但在机器学习模型中,机器正在做出决策,影响产品或服务的行为。这就是为什么软件工程技能对于机器学习的事业来说非常重要。

理解生态

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

现在,我们来了解一下机器学习工程师所需要的真实细节。分为三个主要部分:技能摘要,语言和库,工程实现。

技能摘要

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

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

概率统计。概率(条件概率,贝叶斯规则,似然性,独立性等)和从其衍生的技术(贝叶斯网络,马尔可夫决定过程,隐马尔可夫模型等)的形式表征是许多机器学习算法的核心; 这些是处理现实世界不确定性的手段。

统计学领域提供各种措施(平均值,中位数,方差等),分布(统一,正态,二项式,泊松等)和分析方法(方差分析,假设检验等) 这是从观测数据建立和验证模型所必需的。许多机器学习算法本质上是统计建模过程的扩展。

数据建模和评估。数据建模是估计给定数据集的基础结构的过程,其目的是找到有用的模式(相关性,聚类,特征向量等)和/或预测以前看不见的实例(分类,回归,异常检测等)的属性。这个估计过程的关键部分是不断评估给定模型的好坏。

根据手头的任务,您将需要选择适当的准确度/误差测量(例如分类的对数损失,回归的平方误差等)和评估策略(训练分析,顺序 vs.随机交叉验证等)。

迭代学习算法通常直接利用产生的错误来调整模型(例如神经网络的反向传播),所以理解这些措施相比于仅仅应用标准算法是非常重要的。

应用机器学习算法和库

机器学习算法的标准实现通过库/包/ API广泛提供(例如,scikit-learn,Theano,Spark MLlib,H2O,TensorFlow等),但是有效地应用它们涉及选择合适的模型(决策树,最近邻,神经网络,支持向量机,混合模型等),拟合数据的学习过程(线性回归,梯度下降,遗传算法,bagging,boosting和其他模型特定方法),以及了解超参数如何影响学习。

还需要了解不同方法的相对优点和缺点,以及一些其他的概念(偏差和方差,过拟合和欠拟合,缺失数据,数据泄漏等)。数据科学和机器学习的挑战,如Kaggle的挑战,是一个接触不同种类的问题及其细微差别的很好的方式。

软件工程和系统设计

在任务结束时,机器学习工程师的典型输出或可交付成果是软件。通常它是一个适合更大的产品和服务生态系统的小部件。当然,大的公司,这部分可能交付给软件研发工程师来做。

您需要了解这些不同的部分如何协同工作,与他们进行沟通(使用库调用,REST API,数据库查询等),并为您的组件构建适合的接口以供其他人依赖。这可能需要谨慎的系统设计以避免瓶颈,并且随着数据量的增加,您的算法可以很好地扩展。软件工程最佳实践(包括需求分析,系统设计,模块化,版本控制,测试,文档等)对于生产力,协作,质量和可维护性是无价的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需要了解
  • 理解生态
  • 技能摘要
  • 应用机器学习算法和库
  • 软件工程和系统设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档