软件工程发展趋势

首页 » 常识 » 常识 » 实际工作中,算法工程师需要哪些技能
TUhjnbcbe - 2022/5/29 15:56:00
北京治白癜风什么医院好 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/

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

需要了解

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

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

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

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

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

理解生态

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

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

技能摘要

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

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

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

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

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

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

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

应用机器学习算法和库

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

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

软件工程和系统设计

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

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

预览时标签不可点收录于话题#个上一篇下一篇
1
查看完整版本: 实际工作中,算法工程师需要哪些技能