如何成为一名数据科学家?
联合编译:Blake、高斐
编者注:作者Alec Smith是数据科学领域中资深HR,之所以写这篇文章是因为经常被问到一个问题:“如何才能获得一份数据科学家的职位?” 不仅这个问题经常被问引起了注意,另外问这个问题的人不同的背景也非常很令人感兴趣。作者曾经和以下这些职业的人有过类似对话:软件工程师、数据库开发者、数据架构师、保险精算师、数学家、学术界人士(不同领域)、生物学家、天文学家、理论物理学家—我还能接着往下数。通过和他们的这些谈话,作者发现在这之中有很大的误解存在,很多人都非常困惑——为了闯入这个领域的话,他们需要做些什么?
作者决定深入调查这个项目, 同时提供一个任何想要加入商业计算机科学都能受益的干货资料 ——无论你是刚刚开始,或者早已点满所有的技能只是没有相关的业界经验。因此我打算主要回答这两个概览性的问题:
-
数据科学需要哪些技能?如何才能学会这些技能?
-
从求职市场的角度来看的话,怎样做才能最大化在数据科学岗位上被录用的机会?
你可能会疑惑,凭什么我能回答这些问题?
因为我每天都喝数据科学家打交道,并且作为一个资深的HR,我需要了解相关职业道路,怎样才能成为一名优秀的数据科学家,以及雇主期望能招到哪一种员工。因此对于这件事我还是相当了解的。但是我也想直接找到那些沿着这条路走下来的人,所以我以不同背景的数据科学家开始,期待能发掘到不同的东西。这一次我找到了一个前软件工程师、前天体物理学家、甚至还有一个前粒子物理学家(这令我非常激动,因为他曾经亲身参与过21世纪以来最重大的科学突破之一)。
第一章:什么是数据科学?
你已经下定决心要做一名数据科学家了,很好你已经开始了。但是现在你有了另外一种选择:你想做哪一种数据额科学家呢?因为(认识到这个很重要)虽然数据科学被承认是一种职业已经有很多年了,但是有关于它到底是什么还没有一个大家都认可的定义。
在现实生活,“数据科学家”这个词可以指代非常广泛的工种,因此它存在很多种形式,考虑到工业界以及商业界各种需求的不同,还有问题中目标与输出角色的不同。因此,在某些方面拥有技能的话比其他要更好一些,这就是为什么通向数据科学的路径是不相同的,可以通过多种领域如统计、计算机科学与其他科学学科来实现。
目的是决定数据科学形式类别的最大因素,这也与相应的A类以及B类相关联。广义上来说,分类可以总结如下:
-
面向人类的数据科学(A类) ,举例:分析支持以证据为基础的决策
-
面向软件的数据科学(B类) ,举例:智能推荐系统,如Netflix和Spotify
当这个领域越来越成熟之后,我们可以见到这些定义会愈加完善,在这里我们也要介绍我们第一个专家:Yanir Seroussi,Yanir目前是Car Next Door的首席数据科学家。
探讨职位头衔
在我们深入研究之前,值得花一点时间来反思“数据科学”中的“科学”,因为在某种意义上,所有的科学家都是数据科学家,因为他们都是与各种各样的数据进行打交道。但要考虑到通常被认为是数据科学的这个行业,究竟是什么使它成为一门科学?这个问题很好!答案应该是:“科学方法”。考虑到科学的多学科性,科学方法是把这些领域结合在一起。
然而,业界中职位名称貌似越来越宽松了,并不是所有的数据科学家都是真正的科学家。可以这样问你自己:你能证明自己是一个科学家即便你的工作并不包含真正的科学呢?个人来说,我不认为“分析师”不能作为一个选项 ,或者其他的最合适的也能作为选项。但是这可能只是我个人意见,也许我最好称自己为招聘科学家。
通过讨论的方式我们将继续探索,哪些领域的专业知识你还需要掌握(如果你还没有的话)。
1. 解决问题
如果这个不是你清单中的首位的话,马上去修改。所有科学核心都是解决问题:一个伟大的数据科学家也是一个伟大的问题解决者;就是这么简单。需要更进一步的证明吗,基本我在这个项目中碰到的每一个人(不管其背景和目前工作环境如何)都提到数据科学中最重要的因素就是解决问题。
很明显,你需要有工具去解决问题,但是它们只是:工具。在这种情况下,即便是统计/机器学习技术也可以认为是你解决问题的工具。新的技术出现了,科技进步了。唯一不变的就是解决问题。
在某种程度上,你解决问题的能力是由天赋决定的,但是与此同时有且仅有一个方式来进行提高:那就是练习、练习、练习。在后面我们会回顾这部分内容,但是现在你只需要记住:你只能通过尝试来掌握某件事情。
2. 统计/机器学习
看完上面的内容,似乎我轻视了统计和机器学习。不过在这里我们并不是讨论一个强力的工具;它们是非常复杂的(而且在某种程度上是非常深奥的领域),如果你没有专业的知识,你也不会很快地解决数据科学问题。
进一步对这些词进行解释说明,机器学习可以被认为是从人工智能/计算科学与统计学中发展起来的多学科领域。它通常被认为是人工智能的一个子领域,这是正确的,但是很重要的是要意识到没有统计学的话就没有机器学习(机器学习非常依赖统计算法来工作)。很长一段时间依赖统计学家都被机器学习所轻视,但是在这两个领域的合作才造就了最近的发展(参见统计学习理论),顺便提下高维统计学习只有在统计学家与机器学习结果合作时才会有良好的结果。
3. 计算
-
编程
对于我们来说只需要简单的接触程序就行,因为它应该是很直观的:但是对数据科学家来说编程是必须要会的。设想下如果你不会编程的话,如何才能通过编写一段独特的算法来实现你的理论?又或者建立一个统计模型?
-
分布式计算
并不是所有事情都需要超级大的数据组,但是考虑到现代世界的情况,建议在工作中都加上大数据。简而言之:单一计算机中的主要内存并不能实现大数据处理,如果你想同时在数百台虚拟机中训练模型的话,你需要能够使用分布计算与并行算法。
-
软件工程
对于A类数据科学而言,让我明确一点:工程是一门独立的学科。因此如果这是你想成为的数据科学家类型,你其实不需要成为一个工程师。然而,如果你想把机器学习算法转化到应用中(即B类),那么你将需要一个强大的软件工程基础。
-
手动转换数据
数据清理/准备是数据科学的重要内在组成部分。这将耗费你大多数时间。倘若你没有成功地对数据集进行降噪(例如,错误赋值,非标准化分类等),将会对建模的准确性产生影响,最终导致产生错误的结论。因此,如果你尚未做好处理数据的准备,这将使你先前的知识积累显得无关重要。
有一点是非常重要的且值得注意的,即在商业化组织中数据质量一直以来成为饱受争议的话题,在数据储存方面,许多业务又涉及到复杂的基础事务需要处理。所以,如果你尚未准备好融入这个环境中,想要处理纯粹的数据集,商业数据科学可能不是最适合你的选择。
-
工具与技术
直至目前,你应当意识到,成为一名具备解决问题的能力的数据科学家相比于其他一切条件来讲是重中之重:因为技术将不断发生变化,能够在相对较短的时间内得到掌握。但是,我们不能对其他影响因素置之不理,因而,能够认清楚如今应用最广泛的工具对于成为一名数据科学家是有用的。
让我们先从编程语言谈起,R与Python是两种最常用的编程语言,因而,如果能够选择的话,希望你选用其中一种语言用于实验研究。
尤其是在A类数据科学工作领域,具备能够直观地观察数据的能力将会对与非技术型商业股东交流沟通产生重大影响。你可能具有最优的模型和最深刻的见解,但是如果不能有效地呈现/解释这些研究成果,那又将有什么用呢?事实上,你运用什么工具实现数据直观可视化并不重要,可以是通过使用R或Tableau(当时最为流行的编程语言),但是,说实话,工具是不太重要的。
最后,不论我们所讨论的是关系型数据库,还是运用大数据技术获得的SQL衍生数据库,由于SQL是当时产业界用于数据库中最为广泛的编程语言,大多数公司都非常看重SQL这种编程语言。SQL对于手动转换数据尤为重要,至少在处理更大规模的数据库时。总之,SQL真的值得你花费一定的时间来好好研究应用。
-
交流/商业头脑
在商业数据科学领域工作,具备交流沟通能力/商业头脑是不容忽视的。除非你将要从事非常具体的工作,可能是纯研究类型的工作(尽管我们要面对现实,在产业界并没有很多这种类型的工作),绝大多数数据科学领域的工作都涉及到业界交流互动,通常是与非学者类型的人打交道。
具备将商业化问题和催生这些问题的环境概念化是极为重要的。将统计学方面的观点转化为可以想普通大众推荐的行动或启发性观点也是重要的,特别是对于A类型数据科学领域的工作来讲。我曾与Yanir就该话题交谈过,他的观点如下:
“我发现一种奇怪的现象,当一些技术型人才开始使用行话与人交流时,他们并不留意他们的交谈者——那些非技术型人才,的目光早已落到了别处。在交谈过程中,能够设身处地地为他人着想是重要的。”
摇滚明星
乍看这样一个标题,你可能会困惑不解:事实上,我用这一标题暗含讽刺意味。当然,数据科学家可不是摇滚明星,忍者,独角兽或其他任何一种神秘生物。如果你计划视自己为上述任何一种生物,那你可能该对着镜子好好大量自己一番。但是,讲到这里,我离题了。我想要表达的观点是,有一些数据科学家,他们具备顶尖的专业水平,也可能专业水平更为高端。在别人眼中,可谓稀有物种,尤为宝贵。如果你有此般天赋或愿望成为其中一员,那简直是太棒了。但是,如果你不具备这种才能或愿望,请记得:你可能在数据科学的某些领域做的术业有专攻,而且通常,好的团队是由精通于不同专业领域的数据科学家组成的。决定自己的研究重点在哪一领域,这个问题有回到我们之前讲的个人兴趣和能力这个话题上,我们将在下一章对该话题作继续讨论。
第二章:自我剖析
现在我们正在取得进步!成功地消化了第一章的内容之后,你现在要做好准备开始制定个人目标。但是,我们首先要回顾一下——不妨来杯咖啡,寻一隅安静之所,深思下面的问题:
1.你为什么想要成为一名数据科学家?
2.对哪一类型的数据科学感兴趣?
3.你已经具备了哪些天赋或相关技能?
为什么认真思考这些问题是重要的?简而言之:数据科学是一个专业的研究领域,因而,除非你已经掌握了我们在第一章中提到的知识与技能,否则从事该领域的研究并不是一种轻松的选择。讲到这里,有一点对合理解决前两个问题尤为重要:你需要为从事数据科学领域的研究找到合理的理由,否则,当遇到困难时,很容易半途而废。
为了详细阐释上面的观点,我们来听听Dylan Hogg的见地。Dylan之前是一名软件工程师,现在是数据科学研究协会的领导者,数据科学研究会为运用机器学习(NLP)为雇主和相关候选人员建立联系搭建了一个平台。Dylan是如何从软件工程师成功地转型为数据科学家的(他仍然处于转型期),下面我们将讨论转型过程中应当具备的条件,他讲到:
“不论学历高低,经历丰富与否,有一些内在的东西尤为重要,那就是一个人的求知欲、决心和毅力。你会遇到很多困难:也许是算法方面出错,也许是遇到技术瓶颈。不论遇到什么样的困难,你都能够找到最优的方法来研究机器学习算法或软件工程,但是,倘若你的信心不够坚定,你将会放弃或无法克服遇到的困难。”
这下你会懂了:在学习过程中,你不仅仅会遇到困难;在工作生活中,你会接二连三地遇到难题,因而,你最好能够保证有合理的理由来激励自己,而不仅仅因为你觉得拥有“科学家”这一头衔有多酷。
但是,我们应当如何应对第三个问题?为什么拥有相关技能是重要的?对,一个人的起点会对选择最适合自己的数据科学类型及你应当从自己感兴趣的领域学到的知识产生影响?为了能够恰当地回答这个问题,有必要探寻通往数据科学领域的典型途径,我们应当首先从更为广阔的科学领域开始。
注:在许多定量学科中有许多人具备向数据科学转型的素质。在这里我就不一一列举了,但是,需要强调的重点是:如果你花费时间来真正理解每种类型数据科学之间存在的细微差异,不论你的知识背景如何,你都将会意识到自己所具备的相关技能的重要性。
其他科学学科
这不是通往数据科学领域最平凡的道路;我们接下来将要讨论统计学与计算机科学在数据科学研究中的重要性。但是,许多领域的科学家都具有娴熟的相关技能(特别是物理学领域),许多人在这一方面已经跳过了。
为了对此进行解释,请允许我介绍Will Hanninger,澳洲联邦银行数据科学家。之前,Will是欧洲核子研究中心的粒子物理学家,发现了希格斯玻色子,下面是他的语录:
“在物理学界,你能够自然而然地学习到所需要的数据科学领域的知识:编程、操作数据,获取原始数据并根据实用性对数据进行转换。你能够学习到统计学知识,重要的是:你将学到解决问题的能力。这些是作为一名数据科学家应当具备的基本技能。”
因此,技能组合具有高度可转换性,最重要的是获取解决问题的能力。工具与技术两者之间将会产生差异,例如,尽管机器学习是数据科学的同义词,但是,就更为宽泛的科学而言,这种同义关系是不常见的。在上述讨论中,我们一直谈及的是高智商人才,他们具有在短时间内学会使用工具与技术的能力。
下面我们以Sean Farrell的科研经历为例。Sean所学专业是天体物理学,之后进入澳大利亚商业数据科学研究领域,在研究过程,他就“为什么科学家在数据科学领域的损失反而是收获”这一题目写了一篇著名的博文。下面这段话尤为中肯:
“至今为止,尚未发现一种能够培养出一位数据科学家的正式训练方法。多数数据科学家都来自统计学或计算机科学领域。然而,尽管其他研究领域也能够培养上述列举的技能,但是不能涵盖所有的相关技能。统计学家非常擅长数学和统计,通常在编程这一块儿的技能稍显欠缺。计算机科学家非常擅长编程,但是,在理解统计学知识方面存在难度。两个领域的科学家都具备高水平的(尽管不同的)数据分析技能,但是不擅长创新性地解决问题,这种技能也是难以教会的。”
为了避免误解,请记得我们今天讨论的上下文语境。Sean的一席话并不意味着来自统计学或计算机科学领域的所有数据科学家都缺乏创新性解决问题的能力;他的观点是:相比统计学和计算机科学,广泛意义上的科学对解决问题的技能要求很高。
统计学
谈及到科学,应当仔细研究统计学。近来,许多统计学中的分支学科被重新冠以数据科学之名,因此,在某种程度上,我们好像正在谈论语义学知识。但是,正如我先前谈到的,我认为科学方法应当被当作一门科学:难道提出假设,设计可行的实验方案等研究步骤不能称得上“方法论”吗?倘若不是的话,也许像“统计学家”或“模型分析师”这样的头衔更为贴切。
暂且将这一问题放一放,倘若你是产业界的一名统计员或者刚刚从统计学专业毕业,那么你可能已经拥有成为一名数据科学家应当具备的知识与素养。相关知识素养的形成主要依靠以下因素:
-
首先,你在机器学习技能方面有何经验?正如我们在第一章提到的,统计建模与机器学习是相互关联的,但是,在应用到大型数据集中,后者具有更多的优势。当机器学习在产业界的应用越来越受到关注,实际上,机器学习已经成为各种类型的数据科学。
-
其次,我们再重复一遍,你对数据科学的哪一领域感兴趣?很明显,拥有统计学背景更加有利于你胜任A类型职位,因而,如果你将目标设定为B类型职位,未来还需要学习很多知识。
-
最后,你是否拥有处理数据的实际经验?正如我们在第一章中提到的,手动转换数据是商业数据科学的重要组成部分,而来自统计学领域的科学家手动转换数据的能力相对薄弱。
计算机科学/软件工程
如果你在人工智能或计算机科学领域的学习已经达到前沿水平,你极有可能已经能够胜任B类型的数据科学研究工作。但是,我们这里将要考虑一条数据科学家常走的科研道路:一名经验丰富的软件工程师想要转型进入数据科学领域。
一名软件工程师在机器学习领域可能富有经验,也可能经验甚少。但是,B类型数据科学要求在软件工程原则方面拥有扎实的基础,因而,不论怎样,拥有软件工程方面的学术背景将使你更适合该领域的研究。我曾经与澳洲联邦银行高级数据科学家(先前是一名软件工程师)就此问题交流过,以下是他的观点:
“大量数据科学工作其实都涉及到软件工程方面的知识,不仅仅包括设计健全的系统,而且包括简单地编写软件。你可以通过自动化完成众多任务,如果想要开展实验,你需要编写代码,如果你能够快速编码,将对实验进展产生重大影响。在攻读博士学位过程中,我每天要做成千上万项实验,如此浩大的工程是不可能通过人工完成的。拥有软件工程专业的学术背景意味着我能够快速完成设定的实验任务,然而,许多其他学术背景的学生需要费力处理基本的软件问题:他们真的非常擅长数学,但是要切实证明他们的观点还需要耗费大量时间。”
Dylan对于该问题补充道:
“如果你想要在生产环境中高效运用机器学习算法,良好的软件工程实践能力是非常宝贵的。这其中涉及到各种各样的软件工程知识——如可维护的代码,可供分享的代码库,以便于更多的人能够投入到数据科学领域的研究中,如在计算机中记录信息,排除生产过程中的故障,算法扩展,你应当认识到:一旦这些知识得到加强,你便能够通过这样的方式构建数据科学领域的知识框架。因此,如果你正在寻找一份能够有效利用所掌握的知识的工作,这将使得软件工程学术背景变得更为重要。”
我认为,上述两名数据科学家已经对如何成功实现转型这一问题做出了详细阐释,下面由我来总结如下:如果你是一名软件工程师,而且很喜欢数学,这将有助于你成为一名(B类型)数据科学家,前提是你已经做好准备在工作中掌握统计学/机器学习领域的知识。
数学
很容易得出这样一个结论:数学知识为数据科学的所有研究领域打下坚实的基础。因而,期望许多数学家从事数据科学家的研究工作是合理的。但是,相对来讲,少之又少的数学家成功转型成为数据科学家,这一现象引发了我浓厚的兴趣。
针对这一现象,有一种解释:与其他研究领域相比,数学(纯理论数学与应用数学)领域有相对较少的毕业生,但是,这种解释未免显得牵强。为了深究导致这种现象的原因,我曾经同Building IQ(一家新成立的运用先进的算法优化商业建筑中能源应用的公司)首席数据科学家Boris Sackovic交谈过。Boris拥有电气工程与应用数学双重学术背景,与当时许多数学家合作过,以下是他对该现象的见解:
“许多数学家为理论层面的问题,美丽的方程着迷,能够洞察众多数学原理所蕴含的深层意义,当时商业数据科学研究讲求实证性,涉及到的多种多样的知识与能力。一些数学家喜欢这种实证性,而一些则表现出讨厌的态度。真实的情况更为复杂,你不能兼顾所有的情况,因而得具备能够灵活处理所遇到难题的能力。而这是商业数据科学的重点所在:找到更快更好、切实可行的挣钱方案。对于那些具有浓厚数学背景或理论背景的科学家而言,要理解商业数据科学领域的运行模式可能存在不少难题。我曾经遇到过很多数学专业的博士,他们在由学术界向商业数据科学领域过度期间可是吃了不少苦头。”
需要注意的是,Boris在这里谈及的是纯理论数学家,当然,他也补充说,在自己的职业生涯中也曾与许多优秀的应用数学家打过交道。这样一来上面的讨论便讲得通了,因为纯理论数学家可能会吸引那些热爱理论的人,而不会吸引那些热爱解决实际问题的人。理论研究工作并未涉及到太多数据处理问题,但是,我们都知道数据对于数据科学领域的研究极为重要。
就工作类型匹配度问题,多数数学家可能更适合学习A类型数据科学领域的工具和理论。但是,也有一些学习计算机科学的(实质上,理论计算机科学属于数学的一个分支)数学家,因此,具备这种学术背景的数学家可能更适合B类型数据科学领域的工作。
从上述讨论结果中可以得出一条非常重要的观点,即要理解商业数据科学真正要求数据科学家具备哪些知识和技能。倘若你能够真正清楚地认识到面临的挑战,所需要做的便是为了自己的目标努力前行。但是,倘若相比实际应用,你更热衷于理论研究,你可能要三思而后行。
一块空白的画布
如果你刚刚起步,也许你还是一名学生,喜欢数学、科学与计算,喜欢数据科学,这对你来讲不失为一则好消息:你可以不受先前学术背景的限制,选择属于自己的科研道路。现在有许多与数据科学相关的专业课程,涵盖计算机科学和数学/统计学等。当然你不可能一夜之间成为一名数据科学家,现阶段你需要树立不断学习的理念,利用各种数据科学领域的学习资源, 累积数据处理方面的实际经验,具备与人交流沟通的能力,积极迎接商业数据科学领域未来的挑战!
相关阅读
从世界冠军到数据科学家 他是如何炼成的? | 硬创公开课
PS : 本文由雷锋网 (搜索“雷锋网”公众号关注) 独家编译,未经许可拒绝转载!
via Alec Smith