“数据科学家”被誉为21世纪最性感的工作(Thomas Davenport和D.J. Patil在哈佛商业评论上曾发表的一篇文章中称),但如何成为一个数据科学家?怎样才能入门呢?许多的信息可能导致你认为成为一个数据科学家需要全面的精通一些领域,比如软件开发,数据整理,数据库,统计学,机器学习和数据可视化。
不用担心。从我作为一个数据科学家的经验来说,事实并非如此。你并不需要马上学会一辈子受用的与数据相关的信息和技能。与之相反,你要学会仔细阅读数据科学的职位描述,这将有助于申请那些你已经拥有必要的技能的职位,或者学习特定的数据技能以适应你想要的工作。
4种数据科学工作
“数据科学家”经常是被用来形容完全不同的工作的一个总称。这里有四种类型的数据科学工作:
数据科学家是住在旧金山(San Francisco)的数据分析师:
玩笑归玩笑,其实在一些公司数据科学家是数据分析员的代名词。你的工作可能包括从MySQL数据库中提取数据,成为Excel数据透视表的高手以及生成最基本的数据可视化(如线和条形图)。你可能偶尔分析一下A/ B测试的结果或负责公司的谷歌分析(Google Analytics) 账户。这样的公司是一个有抱负的数据科学家学习入门技术的好地方。一旦你熟悉你的日常事务,这样的公司可以为你创造一个尝试新事物和扩大新技能的环境。
请把我们的数据打包整理!
目前很多公司所处的状态是,他们有大量的流量(日益庞大的数据量),他们在找人建立能帮他们向前发展的数据基础设施,他们也找人来提供数据分析。你会看到这一类型的职位被列在“数据科学家”和“数据工程师”的职位列表里。因为你是第一个(或第一批之一)数据员工,可能比较容易出成果,所以你是一个统计专家或机器学习专家并不那么重要。一个拥有软件工程背景的数据科学家可能更容易在这样的公司有突出的表现,因为对这样的公司来说,更重要的是一个数据科学家能对产品代码做出更有意义的数据类的贡献并提供基本的见解和分析。在这样的公司,对初级数据科学家指导的机会可能更少。因此,你就会有很大的机会大放异彩,并且在磨练中成长,但是由于缺乏指导,你可能会面临更大的跌倒或停滞的风险。
我们就是数据,数据就是我们
还有许多公司,他们的数据(或他们的数据分析平台)就是他们的产品。在这种情况下,数据分析或机器学习的任务就会非常繁重。这可能对一个有正式的数学,统计学或物理学背景并希望继续走一条更学术的道路的人来说是更理想的环境。数据科学家在这样的环境中可能更专注于生产大数据驱动的产品,而不是回答公司业务问题。这一类的公司可能是面向消费者的拥有海量数据的公司或者以提供数据为基础的服务的公司。
大小合理的数据驱动的非数据公司:
很多公司都属于这一类。在这类公司中,你会加入一个由数据科学家组成的团队。你面试的公司关心数据,但可能不是一个数据公司。因此,进行数据分析,了解产品代码,将数据可视化等等,这些能力是同等重要的。一般来说,这些公司要么寻求通才,要么寻找一个能填补他们团队空缺的专才,比如数据可视化或机器学习方面的。面试这一类的公司的时候,比较重要的技能是熟悉“大数据”的专用工具(例如,Hive或Pig)以及有处理杂乱无章的真实数据集的经验。
希望这能帮你了解“数据科学家”的含义是多么广泛。以上四类公司在寻求拥有不同的技能,专长和经验水平的人。尽管如此,所有这些工作职位可能都是“数据科学家”,所以密切关注职位描述可以帮你了解你将加入什么样的团队以及需要哪些技术。
4种类型的数据科学工作以及从中分解的8项求职技能
8项求职技能
这是你应该掌握的8个数据科学的核心技能:
基本工具:无论你面试什么类型的公司,他们都会期望你知道如何利用一些基本的行业工具,包括统计编程语言,如R或Python,以及数据库查询语言,如SQL。
基本统计学:至少对统计学有基本的理解,这一点对于一个数据科学家来说是至关重要的。有一个面试官曾对我说,他面试过的很多人甚至无法提供p值的正确定义。你应该很熟悉统计检验,分布,最大似然估计等。回想一下你的基本统计课程!机器学习方面也是同样的情况,但是你的统计知识最大的作用是帮你理解各个技术是(或不是)一个有效的方法。在所有类型的公司中,统计学都是非常重要的,尤其是他们的产品不以数据为核心的数据驱动的公司,产品的利益相关者将依靠你的帮助来做决策以及设计/评估实验。
机器学习:如果你在一家拥有大量数据的大公司,或者公司的产品本身是数据驱动,那么你就要熟悉机器学习。这包括K-近邻算法,随机森林,集成方法 – 所有的机器学习流行语。事实上,很多这类的技术可以通过R或Python来实现 – 也正因为如此,即使你不是算法方面的权威专家也没关系,更重要的是要对算法有一个广泛的了解并且真正理解应该何时使用不同的技术。
多变量微积分和线性代数:实际上,你可能会在面试中被要求演算一些你在其它地方采用的机器学习或统计结果。即使不是如此,你的面试官可能会问你一些基本的多变量微积分或线性代数的问题,因为它们是很多数据分析技术的基础。你也许会奇怪,为什么一个数据科学家需要了解这些东西,即使在sklearn或R中已经有一堆现成的插入程序。答案是,在某些时候,一个数据科学团队需要建立他们自己的插入程序。理解这些概念在以数据定义其产品的公司显得尤为重要,预测性能或算法优化方面的小的改进可以导致公司巨大的胜利。
数据整理:很多时候,你分析的数据是混乱的,难以处理的。正因为如此,知道如何处理数据缺陷是真正重要的。数据缺陷的一些例子包括缺失值,不一致的字符串格式(例如,“New York”,“new york”与“ny”),以及日期格式(“2014-01-01”与“01/01/2014”,UNIX时间与时间戳等)。如果你是一家小公司的最早的数据员工,或者在产品不是与数据相关的数据驱动的公司,这项技能是最重要(特别是后者,往往因为迅速增长而没有太多的重视数据清洗)。不过,这项技能其实对每个人来说都很重要。
数据可视化与通信:可视化和数据通信是非常重要的,尤其是在第一次做数据驱动决策的年轻公司,或者在数据科学家被看作是帮助别人做数据驱动决策的公司。说到通信,这里是指用技术的和非技术的方式来向你的听众描述你的发现或技术原理。在可视化方面,熟悉数据可视化工具如ggplot和d3.js,是非常有帮助的。重要的是,不仅要熟悉必要的可视化数据的工具,而且要熟悉其背后的视觉编码数据和传输信息的原理。
软件工程:如果你要面试的是规模较小的公司,并且是第一批数据科学员工之一,那么有一个强大的软件工程背景对你来说是重要的。你将负责处理大量的数据记录,以及潜在的数据驱动产品的开发。
一个数据科学家的思维:公司希望看到你是一个(数据驱动)的问题解决者。也就是说,在你面试的过程中,你可能会被问到一些高层次的问题 – 例如,该公司可能要运行的一个测试,或想开发的一个数据驱动产品。重要的是要思考什么事情是重要的,什么事是不重要的。你,做为一个数据科学家,应该怎么样与工程师和产品经理互动?你应该使用什么样的方法?什么时候做近似评估是有意义?
数据科学仍然是新生的,不明确的一个领域。找工作的时候,就是要找到一家技能需求与你的技能相匹配并且有助于进一步发展那些技能的公司。写这篇文章是基于我自己的亲身经历 – 如果你已经在你自己的求职过程中有类似的(或相反)的经验,我也很想听听。