神刀安全网

如何成为一名数据科学家?

很久以前关注过这个问题,我想现在可以来答一下了。

Data Scientist(以下简称DS)是一个很宽泛的概念,相同的叫法,在各个公司负责的工作可能会相差很多。关于DS的讨论不管是quora还是知乎上都有不少, 现在这个问题下的回答就已经覆盖得很全面,很多答主比如@陈然 @谢科 @董飞 本身就是tech公司的资深DS或者Data Engineer,都是和人谈笑风声,比大多数人不知道高到哪里去了。新人如@妖小琪 的的回答总结了很多课程,这里我就不再重复了。

此外强烈推荐@覃超 的回答/专栏/和公众号一系列文章,不完全是DS的,但是有很多跟DS以及产品相关的知识,非常有用,结合@范冰XDash 的增长黑客系列一起看。@董飞 的专栏和公众号也有一系列tech/growth hack等相关的文章,对了解公司、产品、工作思路很有帮助。

接下来 基于自身经历讲讲如果从生物专业转行到facebook做一名(伪)数据科学家的一些准备,提供一点另外一个角度的看法(所以 这里讲的这些可能适用范围有限)。

具体到facebook,大致有两种类型的DS,一种是Core Data Scientist(有时候我们叫CDS),另外一种是product DS或者叫analytics DS。通常来看前者要求要高很多,通常是CS或者统计的PhD,并且学术期间发过很好的paper,当然这也自然会体现在薪水上,我所在的职位是后一种(-_-),也就是我要介绍的.为了方便接下来就叫DS,不作区分了。

=========== == DS的日常 =========== =

如果用一句话来总结的话就是通过数据来发现问题,解决问题。这么说起来可能比较虚,那么可以看看MITBBS上的这篇例子:

http://www.mitbbs.com/article_t2/Statistics/31379771.html

考虑到国内可能要翻墙,部分引用如下:

再说data scientists的日常工作组成, 基本分四项 (1) data pipelines, 这包括各种ETL, 处理数据, reporting, dashboard 等等 (2) product operation, 包括监测和产品的走向, own key metrics, 和各种ad hoc的 product support. 这种可以简单概括成被动分析, 就是有人问你关于产品问题, 你得 回答. (3) strategic analysis, 各种exploratory的分析, 提供insight来帮助产品set  roadmaps. 这种可以简单概括成主动分析, 就是没人问你问题, 你自己要问你合适的问 题, 并且回答, 主动为产品提供发展方向. (4) cross functional influencing. 有了insights, 要和另外几大pillars打交道( eng, pm等等), 所以influencing必不可少. 可以想想, 每个产品的analysts, 都是和那个产品的团队坐在一起的, 而不是和你老板 坐在一起. 同一个analytics team里的人, 往往是分散坐在不同的楼里, 而你老板可能 是坐在他最involve的一个产品那个组里. Analytics team有weekly meeting, 但是你 更多的时候是meet同一product team里的人. 
再说data scientists面试的要点. (1) 有"一定"的技术能力, Python + big data (比如Hive/SQL). R也可以, 但是很多 面试题用R来做恐怕有些困难, 会Python是很有帮助的. 不需要啃算法书, CS面试那种 算法题不会考. 我们只需要知道你有独立handle data的能力, 遇上事情能有技术能力 unblock你自己. 光会SQL是不行的.  (2) 有"极好"的分析能力, 这是analysts的本质, 也是面试的重点. 给你一个问题( open ended), 看能不能 think analytically and structurally. 随便举个例子: 怎 么用FB数据分析日本核电站爆炸的影响. 这里要自己formalize这个问题, 提出假设,  思考可以用哪些数据, 怎么分析, 没有某些数据怎么替代 等等一系列步骤. (3) 有"极好"的product sense. 因为实际工作中, 很多时候没人问你问题, 你要自己 问问题, 问正确的问题, 需要对产品有很好的理解. 这里也举个例子: 假如印度的某个 城市停电三天, 你觉得对FB会有哪些影响, 这些影响对Twitter会如何? 回答这个问题, 先得对行业和产品有一定了解, 否则根本无从下手. 当然一些其他的东西, 比如对数字的敏感度, 交流的能力等等很重要, 但是哪些都表现 在上面这些回答当中.  

这篇文章写得非常全面,是一个analytics manager写的,不过就我的体会以及跟几个在fb已经有一段时间的朋友交流来看,DS的日常工作部分主要是3/4,面试重点主要是2/3,供参考。

里面有一句话我感觉很到位,“很大程度上, FB的datascientists需要的是通才, 而不是专才”,所以我感觉还挺合适我这样转行的。有时候我也会感觉,以前念做生物research的那些思路、经验也还是能用上的,虽然具体分析用到的工具不一样,但是各种experimentaldesign, hypothesis test等的思路还是很类似的。

很多时候,在facebook的DS要充当半个PM使,因为需要DS自己去寻找问题来源,产品发展方向,提供可行的解决办法,然后再继续看效果,继续改进产品,如此往复。也正因为如此,面试的时候一半的时间是在考察产品思维(product sense),顺便考察沟通能力。反正是技术上的要求并不高,基本就是SQL(Coredata scientist/data engineering是另外一回事,那些对技术上的要求是完全不一样的)。

之所以对技术上要求不高,一方面是因为内部有很多做好了的工具直接用就可以,技术上复杂一些的有CDS和DE来解决(所以他们薪水高啊),另一方面,很多数据分析并不需要用来很高深的技巧就能提供解决问题的思路等等。

发展前景的话就目前来看,基本还是有很多职位空缺的,光是fb现在都三月份了,去年的headcount还没有完,现在招的人还在填去年的,今年估计还要招至少100个DS。别的公司估计也是类似的,linkedin上基本每天都会收到recruiter的联系。

== ========= == 面试准备 ======= =======

跳fb之前我在 信用卡公司工作了两年多,第一年主要是做跟pricing相关的strategy,第二年换到modeling组,当时的考虑一是有升职的机会,二是可以做得更偏modeling/analytics的一些东西,稍微复杂一点,顺便增加一些project management方面的经验。回过头来看,这两个组的经历都是很重要的,学会了很多如何找到问题提供解决办法之类,虽然不是直接跟tech做的东西相关,但很多时候大体思路是一致的。

然后这样待了两年多之类,运气爆棚(也有可能是快到年度,tech公司招人的预算花不掉了),十月份陆续收到了Amazon/fb/google的面试,但是职位差别很大。

具体到准备fb,主要是集中在如果了解产品上,因为像第一部分说的,具体techinical的东西并没有很复杂(就product analytics这块而言,core data science那边要难很多很多很多)。

准备面试其实也是一个很好的DS的案例

需要解决的问题:搞定面试

已有的信息:工作描述(job description, jd)

来看fb DS的职位: https://www.facebook.com/careers/jobs/a0I1200000IA2asEAD/

考虑到墙的存在,引用一下关键部分

Responsibilities  Apply your expertise in quantitative analysis, data mining, and the presentation of data to see beyond the numbers and understand how our users interact with our core/business products Partner with Product and Engineering teams to solve problems and identify trends and opportunities Inform, influence, support, and execute our product decisions and product launches. The Data Scientist Analytics role has work across the following four areas: Data Infrastructure Working in hadoop and hive primarily, sometimes mysql, oracle, and vertica Authoring pipelines via SQL and python based ETL framework Building key data sets to empower operational and exploratory analysis Automating analyses Product Operations Setting goals Designing and evaluating experiments monitoring key product metrics, understanding root causes of changes in metrics Building and analyzing dashboards and reports Exploratory Analysis Proposing what to build in the next roadmap Understanding ecosystems, user behaviors, and long-term trends Identifying levers to help move key metrics Evaluating and defining metrics Building models of user behaviors for analysis or to power production systems Product Leadership Influencing product teams through presentation of work Communicating of state of business, experiment results, etc to product teams Spreading best practices to analytics and product teams Requirements  4+ years experience doing quantitative analysis. BA/BS in Computer Science, Math, Physics, Engineering, Statistics or other technical field. Advanced degrees preferred. Experience in SQL or other programming languages. Development experience in at least one scripting language (PHP, Python, Perl, etc.) Ability to initiate and drive projects to completion with minimal guidance Ability to communicate the results of analyses in a clear and effective manner Basic understanding of statistical analysis. Preferred experience with a statistical package such as R, MATLAB, SPSS, SAS, Stata, etc. Preferred experience with an Internet-based company. Experience with large data sets and distributed computing (Hive/Hadoop) a plus. 

最重要的信息其实就是两部分:responsibilities & requirement (责职和要求)

从后往前说。requirement根据我的个人经验,公司是很难找到符合所有条件的人,基本上符合一半就很不错的,剩下的可以入公司之后再学。

而responsibilities可以提供很多insight来帮助准备面试,因为面试的目的就是看你是不是符合工作要求,进入公司之后能不能完全相应的工作。

具体到jd里对应的四个部分,相应需要准备的基本就是sql和product sense(产品思维)。类似于上面提到的以及很多别的人也提到过的,product sense这一部分是最难的,需要了解公司有哪些产品,通过哪些metrics来看产品是不是改进了,比如是不是带来了更多用户,用户engagement如何等等。

同时只有了解了产品,也能知道如果进一步设计实验、分析实验结果来一步一步的改进产品。

tech公司都比较讲究dogfooding,就是员工一定要多用自己公司(和竞争对手的产品),这样才能了解得更全面。

那么准备面试也是一样,通过使用各种产品,增进自己的product sense。

另一方面网上也可以找到很多信息,比如glassdoor, 知乎,quora,google, youtube等等 (以及强烈推荐@覃超 和@董飞 大神们的一系列文章,拿到offer了的话别忘了感谢他们)。

另外,不时会有人问具体的链接。很多时候做个伸手党,要来的东西也不会仔细看的。最好的办法是先自己找找,试着摸清楚一下门路,然后再跟别人讨论请教,然后再回过头自己找、消化,如此往复。如果你自己搜不到的话,那么给你也是没用的。打个比方,如果别人有20个有用的信息,如果你上来就找别人要这所有的,即使要到了意义也不大。

相反,自己先找找到,看能找出来多少,然后再跟人沟通,不仅效果更好,也更有可能得到有用的信息。

我自己有一个总结的相关文章/视频的链接,是从十来页精简到两页的一个文档,基本就是这样一个过程。面试完之后发现,基本还是很有用的。有几个链接甚至是入职之后onborading的推荐读物(所以我这个总结的资料目前基本是没法分享的)。相信对做DS有兴趣的人,通过上面那些关键词,基本上都能搜出来很多有用的准备面试以及职业发展的信息了。

欢迎有兴趣的小伙伴们来加入DS行业啊。

另另外,除了上面提到的在这个问题下分享了答案的,还有别的跟数据相关的知乎大牛们(名单不全,欢迎补充),他们分享了很多有有的资料和回答,可以挑着看一遍(或者几遍),感受一下分析问题的思路,非常有效。

排名不分先后

@贾扬清 google research scientist

@Naiyan Wang 机器学习与计算机视觉

@lau phunter (注:p老师是男的,但是知乎性别不小心成女的了。另外p老师照片拍得很好)

Qcue DS投资管理+咨询+DSfacebook FAIR机器学习fb research传说中的数据控数学大牛 蚂蚁数据分析加艾特不出来的 数据帝chenqi

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 如何成为一名数据科学家?

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮