说到学校教育和实际应用的落差之前,我们先通过几则Data Scientist的Job Posting,来分析一下数据科学家对学位的要求

先来看一下红框内的内容,在第一则JD中写道求职者要有Master或PhD学位,第二个要求是Bachelor,第三个也要求Bachelor,第四个是更倾向于PhD。看到这样的要求,很多人会有这样的理解:

1. 对于一些DS职位来说,获得本科学位就可以达到入门标准,但对另外一些来说就要Graduate Degree。

2. Phd是一个更Preferred的资历,但不是必需的。

但是,这两个理解其实都存在误差。首先,Bachelor的学历其实并不足够,因为DS的职位会需要做一些Research的工作,但本科生很少有Research的经验,所以99%以上的大公司会要求本科以上的学历,至少是Master,除非你是非常优秀的本科毕业生,或者你有非常丰富的工作经验。

另外,大家经常会看到公司JD中写要求Master,但很少看到要求PhD,但对于一些公司来说,他们会要求PhD。

数据科学家求职的成功率和学位的关系,就如同IQ与成功的关系:只要你的IQ高于某个值,成功就靠除智力以外的其他东西。同理,只要你的学历高于某一水平,其实就已经足够了,你能不能成功要看许多其它的方面。

这里有一个特殊情况就是有些同学可能处于PhD退学的一个状态。而对于这是否是一个负面影响重点取决于你的面试官,对于有些面试官来说,他可能会觉得你因为害怕困难而退出,是一个惧怕困难的人,遇到这种情况,你可以给面试官给出一个合理的解释。

学校教育和实际应用的落差

现在我们来通过一张图看一下学校教育和实际应用之间的落差。

大家可以看上图,上图是一个DS的Lifecycle。在工作中做一个DS的Project 时,首先是Management提出一个问题,然后会有一些Business Understanding,你要把这些Business Understanding拆分出来,要决定用什么模型解决这个问题以及这个模型需要使用哪些Data。

对于这些Data,首先要有Data Collection,然后在一个Environmental中运行这些数据,当你拿到这些运行后的 Data后, 你要去Cleaning这些数据,让它可以用于模型使用。

当你有了Data和Model之后才可以回答那些问题。回答完问题后,你要考虑将这个本来是用Offline分析的Model用在自己的产品上,要做出它,并且要看它的Performance怎么样。

上图中黄色虚线内的部分就是大家在学校里面接触到的内容。传统的School Project重点培养的是学生对Model本身的理解,因为学校的项目给学生的Data一般都是已经处理好的,并且一般学校的Project所用的模型都很小,所以,学生可以在Local Machine上面运行,运行完后,也不需要再Monitor那些Model或将Model自动化作为生产用。

我们来看下面这个例子,用过R的同学应该会对这个例子比较熟悉,这是一个很经典的Boston Housing的Project。

这个Project有一个Boston Housing的Housing Value,Input是从右边这个表中的第二行到最后一行的内容,老师通常会让大家用Data Set去建模,这重点考察了你通过写一些R Code去做Model Selection和等做出Model后,去做模型诊断分析以及用Data Set去做Machine Learning里面的一些基础概念,还有去建立不同的模型。

上面我们讲解了一个很传统的学校Project,但在实际应用中你往往会遇到许多你在学校没有遇到过的问题。

比如,在Boston Housing这个项目中,他的Dataset都是给定的,你只能从有限的Variable中去选择,但是你并不知道为什么需要在这些Data Set中选而不是从其他的里面选择。但在实际应用中,你先是会有一个Business Question,然后你要进行一些头脑风暴。

比如说,你的老板想让你预测一下Housing Price,那么你就要去想哪些Variable可能会对Housing Price有影响,然后再去想如何收集所需数据。这时,你并没有一个已经做好的Dataset可以直接建模。还有你可能会遇到Dataset不在同一个平台上的问题,比如说有些数据在Data Link里面,有些在Server里面,你就要考虑如何从不同的平台收集数据来让模型使用。

大家最经常遇到的问题就是如果Data的质量很差应该怎么办。比如说在一个地区,居民的Income对这个地区的Housing Price有很大影响,但是你没有办法收集到准确的Income,或者虽然收集到了,但误差很大。并且当你做好Model后,你要考虑如何Productional Model。

除了这些技术方面的问题,你也会遇到很多非技术方便的问题。这就比较考察你的软实力,比如说当你做出模型后你需要跟一些没有专业知识的人去卖出你的模型,这些都是在学校中无法学到的。

通过以上了解,我们可以总结出学校教育和实际应用之间的Gap主要存在于以下方面:

1. 数据质量,在实际工作中,你所能用到的数据的质量都是很差的;

2. 数据大小,绝大多数的科技公司所需要处理的数据量是非常大的,这就使得你无法用处理学校项目时用的Local Machine来处理;

3. 工具使用,这一点与第二点息息相关;

4. 对整个Ecosystem的了解,比如上面我们讲过的那张图中所示,你要考虑怎么去整合模型,Business People,Data Engineer和Deployment的SDE,要考虑怎么将整个Ecosystem一体化。

大家可以看到在上面这张图中,作为一个DS所需要的知识被分为了四个模块,首先,你要懂Math & Statistics,这一块可以通过学校教育获得。然后要知道Domain Knowledge & Soft Skills 和Communication & Visualization,这两块可以在工作中获取,最后是Programming& Database,这一块就需要你即从学校中获取,又在工作中获取。

上面我们已经说了许多学校教育和实际应用之间的Gap,那么当没有工作经验时,大家应该如何去填补这些Gap呢?下面,就来给大家给出三个建议:

1. 熟悉工具的使用,熟悉和理解大数据 Infrastructure的概念

2. 强化Coding基础。在学校里面,大家很多时候只有在做模型的时候会用到Coding,但是作为一个Data Scientist,很多时候你都需要参与Data的获取和Model的Deployment,这都很考验你的Coding基础,如果大家有时间的话可以学习一些Soft& Engineering的一些Coding

3. 寻找实战项目