HR经验总结:我在数据分析师面试中会考察哪些能力?
我会在面试中考察的,有四方面的能力:
- 概率与统计
- 计算机与编程能力
- 商业常识
- 专业领域学习能力
1.概率与统计
理解并能正确运用以下概念/方法
mean, median, variance, standard deviation, skewness, pdf, cdf
Conditional probability, Bayes' Theorem, Bayesian Inference
Binomial distribution, normal distribution, chi-square distribution, t distribution
Correlation and covariance, ANOVA
hypothesis testing, t-test, p-value, Confidence interval
Linear regression, logistic regression, R-squared
不多说了,统计系高年级或非统计理科专业研一的水平就足够了。
2. 计算机与编程能力
数据科学家的工作中包括相当程度的编程工作,然而对于编程能力的要求和程序员有显著不同。一般而言,数据科学家的编程能力更强调探索性、实验性的快速实现。具体来说,以下几个方面是考察的重点。
熟练掌握任意一门脚本语言。目前的趋势来看,这个“任意一门”约等于Python。当然如果也会Scala就更好了。
个人感觉R 有些overrated 了。有R 的经验当然是优势,没有也不是劣势。
Javascript和前端经验是大优势。
// 评论里有朋友问了前端,多说两句。前端能力主要用在迅速分享成果时特别有用。书面的报告一般没人看,PPT也是过眼即忘,但一个online 的live demo 大家都会来玩一玩,也乐于给你Feedback,对于敏捷开发非常有帮助。
理解HTTP request 和Restful API。
SQL语言,对关系型数据库的理解。
Linux Commandline Tools:
cat, head/tail, grep, sed, sort, uniq, awk
//我会告诉你 这些命令用pipe组合起来几乎能完成80%国内数据科学家的工作吗?
有熟练运用的文本编辑器(最好是VIM)
至于在具体的数据分析、机器学习的工具包上的经验,如Pandas,Scikit-learn,Weka,Spark MLlib等等,反而并不是特别重要。如果有上条概率与统计的基础,又具备这条列出的编程能力,这些工具包分分钟用起来。而有些候选人对于各种包的名字和参数如数家珍,然而既讲不清算法原理,又不明白应用条件,这样是无法胜任工作的。
数据科学家的工作绝大部分是self-driven 的,需要自己去发现、定义有价值的问题,然后才是运用统计与计算机技能解决之。而且在绝大多数情况下,发现和定义问题,比实际解决问题更为重要。发现和定义问题的能力,基本可分为两部分:商业常识和具体业务的知识。以下分别介绍之。
3. 商业常识
这一部分主要是对基础的经济学概念和理论的理解。现代经济学的价值,在于它提供的一套量化分析的理论框架。在这套框架下,能够很清晰地看到企业需要达到什么样的目的、为达到目的需要做什么样的决策、做决策需要什么样的信息、信息从哪些数据中提炼及如何提炼。这基本就是数据科学家为企业提供的价值核心。
以下是个人觉得重要的一些经济学基础概念。基本上是美国高中生到大一的难度水平。
市场,供给/需求,平衡,弹性,效用,边际,外部性
不确定性/风险,风险偏好,风险溢价
生产函数,规模效益,固定/可变/边际/平均成本,机会成本,利润最大化
垄断,价格歧视,ZF干预,税收与补贴,价格管制
博弈论基本概念:策略,均衡,信息,囚徒困境,重复博弈,零和博弈
利息,现金流折现,股票和债券,收益率,资本预算,资本成本
GDP,投资,消费,进出口,货币,汇率,通胀,失业,央行,货币政策与财政政策
4. 专业领域学习能力
按所服务的具体行业不同,数据科学家需要的业务知识自然千差万别。然而将“数据科学家”和“XX行业的数据科学家”区别开的,是快速学习了解一个未知行业、并发现数据科学价值所在的能力。这里并不是说要在一两周内成为这个领域的技术专家或金牌销售,而是能够迅速了解行业价值链和本企业在价值链中的位置,梳理清楚业务流程并发现流程中可以改进的地方。这部份可以参考咨询行业与金融分析行业的一些要求,就不展开说了。