给毕业生:你应该选机器学习还是数据科学?

2020 年 8 月 06 日

给毕业生:你应该选机器学习还是数据科学?

随着数据科学行业自2013年以来的爆炸式流行,该行业一直不断地朝着更宽泛的方向发展,但同时也逐渐出现了更具体的职业角色分化。本文首先分析了数据科学行业的总体发展趋势,然后深入地比较了机器学习领域中几个不同名称的职位的职能,对寻找数据科学和机器学习类工作的毕业生非常有指导意义。



在 Metis 训练营,本文作者给学生们演讲之后的合影(图片来源:本文作者)。


自我介绍


大家好,我是杰森。我在硅谷工作,是一名数据科学家(关于这个名词,我们将在本文后面进一步定义),我热爱学习一切新事物!


引 言


说实话,这个话题在我脑海中已经萦绕很久了。但因为平时实在有太多的事情要做,我无法挤出时间来完成这项艰巨的任务。但是,如今由于新冠疫情的居家隔离令,我被困斗室,最近也快没啥事情能让我打发时间了,我终于下定决心来完成这个话题的写作。


随着数据科学行业自 2013 年以来的爆炸式流行,该行业一直不断地朝着更宽泛的方向发展,但同时也逐渐出现了更具体的职业角色分化。在该新兴行业的演进过程中,不可避免地导致了有一些岗位在名称和职能上出现了混淆和差异。例如,许多看似完全不同的职位但却在实际工作中扮演着相同的角色,或者有名称相同的职位却在实际工作中承担着不同的角色,这些职位头衔可能包括:


数据分析科学家,机器学习数据科学家,数据科学工程师,数据分析师/科学家,机器学习工程师,应用科学家,机器学习科学家……


这样的例子简直不胜枚举。即使对我来说,通常招聘人员也会因为数据科学家、机器学习(ML)专家、数据工程师等不同职位的招聘而与我联系。显然,整个行业对这些五花八门的职位都困惑不已。造成职位名称差异如此之大的原因之一是,实际上各个公司对数据科学的需求和用途本身就大相径庭。但无论背后原因是什么,如今数据科学领域似乎正在不断进行分化和合并,并逐渐形成以下几个主要工种类别:分析、软件工程、数据工程以及研究。不管那些看似相似的职位是怎么命名的,通常它们都能归类落入这些类别。这种工种细化在那些财大气粗的大型科技公司中表现得最为真实。


在本文中,我们将首先了解数据科学行业的总体趋势,然后更深入地比较机器学习工程师和数据科学家两者的职能。我并不想在本文中去赘述一段漫长的发展历史,而是选择讲述我作为一名数据科学家生活在硅谷的所闻所见。即使在 2017 那年,我写过一篇文章“如何在还没有获得学位的情况下成为数据科学家”,现在和那时相比,我对数据科学的看法也发生了很大变化。


去年,我被邀请给Metis训练营学习数据科学的学生们做一个简短的演讲,我当时谈到了这个话题。今天我想借用本文对这些职位的区别进行一番解释,并帮助你找到最适合你的工作角色。也让我们一起来看看,这个行业的发展是依然朝气蓬勃,还是已经日暮西山,因为预测发展趋势原本就是数据科学家的本职工作,对吗?(也可能不是吧)。无论如何,我衷心希望本文给你带去有用的信息。


数据科学行业的发展趋势


在我们深入挖掘信息之前,先看看我在 LinkedIn 上找到的两份职位描述。我已遮去了它们的职位名称,请读读下面的内容,试着猜一下这些招聘广告的原标题是什么。我用红色标出了一些关键点:



去年我在 LinkedIn 上发现了这两份职位描述。虽然有点过时了,但内容仍然贴切(资料来源:LinkedIn 和 Facebook)。


这两份职位描述相差甚远,是吧?但可能会让你大吃一惊的是,这两份职位描述都是针对数据科学家这个岗位招聘的。左边是 Facebook 的招聘广告,而右边是 Etsy 的。但在这里我并不想比较哪家的职位描述写得更好。重点是看看它们在内容上差异有多大。



以上职位描述的职位名称。Facebook(左)和 Etsy(右)(资料来源:LinkedIn 和 Facebook)。


即使在工作中,人们也常常会因为如何定义数据科学家而展开热议。我遇到过人们把数据科学家定义为计算机科学专业的博士新数据分析师。这其实是因为不同的公司对不同的职位都使用了数据科学家这样一个相同的术语。然而,我相信经过这么几年发展,这个行业应该有更细的分工以及更具体的职位定义,而不是把所有的东西都笼统地塞进数据科学这一广泛范围里。


那么,在数据科学家这个已经被滥用的职位名称下,实际上可能暗指哪些不同的具体岗位呢?在很大程度上,我认为这个职位有可能指的是软件工程师、数据分析师、数据工程师和应用/研究科学家。我知道有不少朋友顶着相同的数据科学家头衔,但在实际工作中他们的角色是上述四者之一。请看看下面我创建的图表。在数据科学发展的早期,一名数据科学家的工作内容可能的确包含了这四个角色的职能。然而,如今的职位正变得越来越具体和细化,正如下图所示。



数据科学家工作内容发展趋势(资料来源:本文作者)。


《哈佛商业评论》预见了这样的发展吗?


这种发展趋势令人惊讶吗?根据 2012 年《哈佛商业评论》(Harvard Business Review)杂志上那篇著名的文章《数据科学家:21世纪最令人称羡的工作》,这样的发展趋势也并不足以为奇:


数据科学家最基本、最通用的技能是编写代码的能力。但在五年后,这一点可能就会发生变化,因为会有更多的人会在他们的名片上印上“数据科学家”的头衔。


正如这篇文章所描述的,如今作为一名数据科学家,你并不一定非要成为一名优秀的程序员。那是因为,以前用来分析大数据的工具和方法并不是那么随处可得且用户友好。这就要求从前的数据科学家在拥有其他技能的同时还需要具备较强的工程技能。但是用于机器学习和数据科学的工具发展十分迅速,现在比以往任何时候都更容易获取这些工具,因此你只需几行代码就可以访问使用最先进技术(State of the art,SOTA)的模型。这使得以前的数据科学家角色如今更容易分拆成为分析师或工程师。现在,我们不必像以前那样,需要全面掌握所有分析、工程和统计知识才能成为一名数据科学家。


例如,Facebook 就引领了这一趋势的变化,让过去的数据分析师的工作角色变成了数据科学家。这是一个自然的演进过程,因为随着数据量的增加以及数据问题变得更具挑战性,执行良好的数据分析需要更多的专业技能和培训。不仅仅是 Facebook,像苹果和 Airbnb 这样的公司也已经开始明确区分数据分析师/产品数据科学家和机器学习数据科学家这样的角色岗位。


公司规模如何影响岗位的分化


值得一提的是,这样的角色岗位细分更多发生在规模较大的科技公司。数据科学家这个角色和软件工程师还是有很大差异的,固然各种大小规模的科技公司都需要软件工程师,但并不是所有公司都需要专业的研究科学家或机器学习工程师。许多公司拥有几名数据科学家可能就足以运转业务了。所以在小公司里,可能仍然会有一些数据科学家同时扮演上述四个角色。


根据一般的经验而言,大公司(FANG 四巨头:Facebook,Amazon,Netflix 和 Alphabet)的数据科学家职能通常类似于高级分析师,而小公司的数据科学家扮演的角色更类似于机器学习工程师。当然这两种职能对于公司来说都是重要和必需的。接下来,我将继续沿用这里我的新定义,即下文每当提及数据科学家时,意味着这是一个分析师角色。


数据科学家分化出的不同角色以及如何选择


在下面的图表中,我试图展示一个与上面的图表类似的图,但对这四种功能增加了更详细的描述。这些描述内容可能并不算完美,但你可以把它们作为参考。



数据科学家职能的四大支柱(资料来源:本文作者)。


求职——应该选择哪个职位以及如何准备面试?


如果你试图进入这个领域,无论是当一名机器学习工程师还是数据科学家,你可能首先想知道的是自己究竟应该选择哪一个岗位。请让我列出四个与机器学习相关的主要岗位简化的(但也是约定俗成的)描述,以帮助你弄清楚这些职位到底是干什么的。虽然我个人在工作中并没有将所有这些职位都尝试干过一遍,但我从工作在各个领域的朋友那里学到了很多有用的知识。我还在以下描述中的括号里提供了可能的面试内容(假设是典型的四轮面试)。


  1. 数据科学家:你想分析大数据、设计实验和A/B测试、构建简单的机器学习和统计模型(例如使用sklearn)来推动商业策略的运筹帷幄吗?这个角色的工作不会特别结构化,会包含较多的不确定性,你需要能够独当一面地去主导项目的表述。(面试:1轮概率/统计,1轮Leetcode编程,1轮SQL,1轮机器学习。)

  2. 机器学习工程师:你想在实际业务中构建并部署最新的机器学习模型(例如Tensorflow,,PyTorch)吗?你工作的重点不仅是构建模型,而且还需要编写软件以运行和支撑你的模型。在这个职位上,你更像是一个软件工程师。(面试:3轮Leetcode编程,1轮机器学习。)

  3. 研究科学家:你有计算机科学专业的博士学位,并在ICLR国际会议上发表过几篇机器学习相关的论文吗?你是否致力于突破机器学习的研究前沿,当你的论文被别人引用时会感到兴奋不已吗?能做到这些的人的确是凤毛麟角,相信如果能做到这些,你已经很明确自己想干什么样的工作了。而这类人才中的大多数最终都进入了谷歌或者Facebook。而且,即使没有博士学位也可以进入这个行业,但这样的情况少之又少。(面试:1轮Leetcode编程,3轮机器学习/研究。)

  4. 应用科学家:你是机器学习工程师和研究科学家的混合体。所以这个角色不仅要关注编程,还需要去使用和推进最前沿(SOTA)的机器学习模型。(面试:2轮Leetcode编程,2轮机器学习。)


显然,以上这些描述并不算面面俱到。但当我和朋友聊起相关职位,看过很多工作描述后,我发现上述这些观点还是普遍适用的。如果你对自己想要申请的职位还是有些不太确定,这里我还有一些建议可以帮助你进一步了解工作职位:


  • 阅读职位描述:说实话,职位头衔并不重要。这些职位统统可能都被冠以相同的“数据科学家”字眼,但工作角色描述可能相去甚远。

  • 挖掘LinkedIn:如果你不确定苹果公司招聘的数据科学家是什么样的角色,只要看看苹果公司的数据科学家在LinkedIn上有什么样的专业背景就可以了。他们是否大多都是计算机科学专业的博士?或者是本科生学历?他们都接受过什么样的专业培训?这些信息将有助于你了解更多。

  • 面试:如果你认为你应聘的职位是一个技术岗位,但在面试过程中却没有遇到任何编程技术面试,那你多半不会在此得到一个技术职位。通常你的面试内容就反映了工作的性质。


机器学习工程师 vs 数据科学家


好吧,已经说得够多了。现在回到我们的话题上来。近年来,我开始听到人们对数据科学工作的负面评价越来越多。造成这种情况的几个原因是,越来越多冠以“数据科学家”的工作岗位貌似并不像从前一样包含许多高端的机器学习成分,而且这样的职位似乎比以前更容易获得。也许五年前,大多数招聘岗位描述会要求至少有硕士学位才能应聘数据科学家的工作,但现在情况已经大不一样了。不管人们如何揣测数据科学(至少在过去日子里)热度已过的原因,请让我们先来看一些实际数据。


下面的数据和图表来自世界著名的薪资数据库搜索引擎,Salary Ninja。它根据 H1-B 数据库中全美的外籍员工的信息进行搜索。你会看到 2014 年至 2019 年,职位名称中含有“数据科学家”或“机器学习工程师”的职位的数量和平均工资。



比较数据科学家和机器学习工程师的工作机会变化趋势(资料来源:本文作者)。


你对这一结果感到惊讶吗?尽管这两个职位的平均工资大致差不多,但你可以看到数据科学家的平均工资在 2015 年和 2016 年有所下降。大概这就是人们所说的,数据科学家的好日子一去不返了吧。但就纯粹工作数量而言,数据科学还是远远大于机器学习工程,但你可以看到相比之下机器学习工程师工作数量的增长速度更快,且平均薪水也更高。


为了方便你阅读,我在下面总结了从 Salary Ninja 收集的本文讨论的几个角色的统计数据。第一张表展示了过去六年的统计,又抽出其子集在第二张表里仅展示了 2019 年的最新数据统计。最后,我列出了微软这一家公司六年以来的数据统计。



几个与机器学习有关的职位的简要统计(资料来源:本文作者)。


从以上数据中,我得出有趣的几点见解:


  • 总体而言,数据分析师的人数要多于数据科学家,但2019年情况却出现了逆转!这是否意味着数据分析师的职位正被很多公司重新冠名为数据科学家?

  • 机器学习工程师的薪水略高于数据科学家,但实际工作中机器学习工程师的职位数量要少得多。这是因为机器学习工程师的正式头衔通常就是软件工程师

  • 而研究科学家的平均薪资水平低得令人惊讶。我发现这是因为该数据库可能包括了许多其他类型的研究科学家,而不仅仅是那些在机器学习技术领域做研究的人员。这就是为什么我特意只选了一家科技公司列了第三张表格,以减少此类干扰。正如预期的那样,在微软公司里研究人员占据了最高薪酬的宝座。

  • 然而,我还是被数据工程师130万美元的最高年薪震惊了。这简直是太疯狂了!也许你应该考虑一下该职位。

  • 请记住,该数据集只包含底薪,而如今在科技界,股票也常常扮演着重要角色。此外,它也远没有描绘出就业市场的全貌。然而,考虑到美国科技行业的外籍员工数量,这仍然算是提供了一个很好的参考指标。


根据这些数据,我认为,也不能就武断地说数据科学行业已经走向萧条。这个行业仍在增长,但今后可能会更加专注于分析方向。根据我的观察,如今似乎有更多数据科学领域的工作岗位降低了准入门槛,但这也并不算是一件坏事。


结 论


到这里,本文已经讲了很多,但我仍希望你能读完最后这一部分。我写这篇文章是因为,面对这个行业正在发生的所有变化,我自己也常常感到困惑。而且,人们似乎对什么是数据科学有太多五花八门的看法。无论谁对谁错,我希望你能看到发展的趋势,并自己做出决定。


最后,不要因为一个工作或行业的平均薪酬较高或热度较高就轻易地对它做出选择。你的头衔是数据科学家、机器学习工程师还是数据分析师,这些并不重要。如果有人说数据科学家其实就是工程师,或者就是分析师,这些也不重要,因为这两种说法都可能是对的。


虽然很容易根据薪水高低来比较职位头衔,但选择一个你喜欢并且擅长的职位才是真正重要的事情。请专注于你所做的实际工作,并确保这份工作与自己契合。别因为平均工资看上去较低就产生错误的印象,这并不一定意味着你的实际工资会比别的工作低。正如你在前面表格中看到的,本文讨论的所有职位它们的最高年薪都相当地高。


在我结束本文之前,还有一些其他的资源和更多的信息可以供你参考:



再次感谢你的阅读。希望这篇文章能给你一些启示,这样你在研究数据科学和机器学习的时候就不会感到迷茫。衷心祝愿你在这段艰难的日子里一切顺利,并希望本文对你有所帮助。


作者介绍:


Jason Jung,GoDaddy 公司软件工程师/数据科学家。毕业于西北大学和 UCLA。创立了 Salary Ninja 网站。个人网站 https://jasjung.github.io


英文原文:


https://towardsdatascience.com/mlevsds-3c89425baabb


2020 年 8 月 06 日 14:421537
用户头像
陈思 InfoQ编辑

发布了 555 篇内容, 共 189.7 次阅读, 收获喜欢 1064 次。

关注

评论 1 条评论

发布
用户头像
有意思的分享
2020 年 08 月 13 日 16:18
回复
没有更多评论了
发现更多内容

达达双云双活实践

达达集团运维团队

openresty 微服务治理 多云架构 双活容灾 原生容器

oeasy 教您玩转linux 之 010209 装酷利器 hollywood

o

Docker Compose 搭建 Redis Cluster 集群环境

哈喽沃德先生

redis Docker Docker-compose redis集群 redis cluster

云栖大会边缘计算分论坛倒计时7天,这2点值得期待

巨侠说

边缘计算

大数据思考

朱月俊

从零开始搭建完整的电影全栈系统(三)——restfulApi的编写

刘强西

RESTful 电影api

手握阿里P8亲传Redis和MongoDB利器,怕什么面试官

小Q

Java 数据库 redis mongodb 面试

开始编译第一个typescript实例

程序员学院

Java typescript 前端

java安全编码指南之:Number操作

程序那些事

java安全编码 java安全 安全编码规范

synchronized实现原理及代码证明各种锁

Darren

源码 synchronized 轻量级锁 偏向锁 Monitor

第十三次课

大数据应用场景

朱月俊

架构师训练营——第13周作业

jiangnanage

架构师训练营-week13-学习总结

晓-Michelle

极客大学架构师训练营

Google 搜索引擎之PageRank 算法

莫莫大人

极客大学架构师训练营

PHP配置管理-yaconf

Dnnn

php

windows10 CUDA环境搭建

yuanhang

tensorfl

MySQL中修改数据表存储引擎的三种方法

Matrix Chan

MySQL 运维 数据表引擎

极客大学架构师训练营 0 期 week 13 学习笔记

chun1123

大数据 学习

week13 作业

Geek_196d0f

架构师训练营——第13周学习总结

jiangnanage

Week13 总结

张磊

Spring 5 中文解析核心篇-集成测试之TestContext(中)

青年IT男

Spring5 JUnit

PageRank

GalaxyCreater

【在云端 003】 星星之火,可以燎原——云时代的IoT

Bora.Don

云计算 IoT AIOT

第13周作业

刘卓

第13周学习总结

刘卓

极客大学架构师训练营 0 期 week 13 作业

chun1123

数据分析 PageRank

week13 小结

Geek_196d0f

公有云常用数据分析指标

张磊

第13周数据分析

陆不得

给毕业生:你应该选机器学习还是数据科学?-InfoQ