成为数据科学家的必备技能和找工作的建议
数据科学是一门典型的交叉科学,内容之广,涵盖统计、数学、编程、商业知识。我还在学校的时候,对这个职业并没有具体的认识,因为急着找工作,走了一些弯路。现在总结一下自己入行以来关于职业技能的心得体会,希望能够帮到对data science 感兴趣但不知道怎样入行的朋友们。
以下内容是我根据自己经历总结的个人见解,仅供参考。我的经历比较偏向统计、计量经济、因果分析、优化、机器学习,没有接触过工业届的深度学习。
统计和数学
首先,Don’t panic.
要学的东西很多,看上去可能有点intimidating,但是不要怕!你真的不需要成为所有方面的专家,工作中,大多数人都是非常了解某一方面,对其他的知识只有一个大概的理解。但这些都是触类旁通的,接触到之后学起来很快。(这里所说的大概是指了解特定问题的原理、大概方法、和实用场景,不一定你真的要亲自implement过或者推导过。)根据你自己的兴趣,选择一个深度和广度的平衡。推荐Brandon Roher 的博客 Imposter Syndrome。没有人规定ds的技术栈必须是什么样的,只要你有不断学习的意愿,在用数据解决问题,查漏补缺,你就是一个real DS.
有些知识是强烈推荐熟知的,见加粗字体。
-
掌握一些常见的回归模型(OLS, WLS, Regularized Regression, Fixed Effect 和 Random Effect, time series),包括模型的形式、假设、适用场景。
-
熟悉 Bayesian Theorem和Bayesian Estimation (是什么,怎么用)
-
统计的基本知识,置信分析,p 值,实验设计,power analysis,假设检验
-
选择变量和降维的一些常见方法(pca, 上面的 Regularized Regression等等)
-
常见的采样方法(random sampling, stratified sampling, MCMC,各种sampling步骤怎样的,为什么要这么做)
-
优化问题的框架(比如目标函数、约束条件)和常见的优化方法实现
机器学习
-
分类算法(决策/回归树,随机森林,逻辑回归,XGBoost 等等,对算法和实际运用的常见问题有了解 ,能够比较不同算法的优劣)
-
聚类分析 (K-means, Hierarchical 等等,算法、应用场景,最好自己implement过)
-
各种算法的评估metric(R squared, AUC, sensitivity vs specificity,一个捷径是逐条看sklearn里的metrics条目简介,比较各自的侧重点)
-
交叉验证的理念、方法、流程
由于我对深度学习仅有书本知识的了解,没有在工作中实际接触过,建议对深度学习感兴趣的同学们直接在linkedin上咨询有经验的人士。在message里写明自己的兴趣、感兴趣的原因、和具体的问题,大多数时候很多人都非常热心愿意帮助别人。
编程
必备技能!
-
SQL
ds的吃饭必备手段,必须熟练。作为一个ds,每天抓取和清理数据是家常便饭。
-
python中熟练的数据处理能力,pandas和numpy
从抓到数据到运行算法之间的处理主要靠这两个package,没什么难的,多多练习就好了。再练习一下leetcode上简单到中等的题目,ds对编程的要求没有像码农那么高,但白板面试也很常见。不用太注重刷题,平时自己做做小项目也能有效锻炼编程能力。一个可供参考的小项目:抓取twitter上的tweet,可视化川普的发推趋势和推中的含某个关键词的百分比。
-
数据可视化。
一般面试不大会考,但如果是take home test,就一定会用到,工作中也一定会用到。对于ds来说,无论你的模型再高级、结果再好,最终都要落地成普通人能理解以及符合常识的东西。仅仅看一个single model evaluation metric是不够的,转化成商业语言到底是什么样子?常识上来说有没有道理?怎样有效传达你的信息,在工作中是非常重要的。
-
Modularize乃至productionize的能力。
在工作中,不同的岗位不一样。有的岗位需要自己productionize,有的eng会帮你productionize。但即使是后者,也需要你写出一个比较漂亮的prototype。怎样让你的算法定时去run,每次跑的input怎么拿,output怎么拿,算法本身是不是一个能读懂的、包装的比较好的function或者class。这一点我是在工作中逐渐学习到的,如果平时有空,强烈推荐自己做一些小的project。在做project 的时候,把自己当成一个团队,既要当pm,又要当eng,又要当ds,可以学到很多东西,是个挺有意思的过程。
行业知识和软技能
这一点真的非常、非常、非常重要(重要的事情说三遍),但似乎也是最经常被人忽略的。
-
行业知识。
虽说以上的技能是可以通用,但做数据最重要的其实是对行业的了解和敏感性。统计和编程只是实现手段,是厨具,更高级的厨具也许可以作出某些少见的菜肴,但真正决定菜的色香味的,并不在工具而在厨师的水平。对想入门的朋友们,要看看某个行业是不是自己真正感兴趣的,但对于已经在职场工作了一阵子而想转行且行业不同的朋友来说,要做好丢失之前所有行业知识的心理准备。
最初我想多探索一些不同的行业,先后在通信、社交媒体、银行风控和共享出行都有正式或者实习的经历。虽然一直做着data相关的工作,但具体要解决的问题和所需的技能实在是千差万别。如果发现自己喜欢的行业,最好多学习多思考,厚积薄发。
-
软技能
面试的时候,你需要有清晰的表达能力,让面试官听懂你过去所做的项目、还有运用的技术。同时,你也要认真聆听面试官的诉求,他/她给出的商业问题,并有条理有逻辑的组织你的回答。在技术水平相似的时候,流畅的表达能力和反馈能力非常加分。
工作之后,当你有了自己的项目,也需要多多和团队交流。如果有了一个好点子,要及时和老板、同事、和pm沟通,得到他们的反馈和支持。任何职位都不是单打独斗,推进项目更加需要你有策略的展示、沟通。一个数据科学家的价值,不在于本身技术能力有多强,而在于能不能落地成项目,为公司创造价值。
万事开头难,找工作是一个日积月累然后厚积薄发的过程。只要入了ds的门槛,对实际的工作有了一个大概的了解,之后的提升、或者换工作,都会比最初找工作的时候轻松很多了。最后,希望大家都能找到满意的工作。