http://mp.weixin.qq.com/s/tkQmsH6c__2MLWWvmtPVAw

Data Scientist的技能要求

SQL

大家可能觉得Data Scientist都在做深度学习模型,并不经常用到SQL,但事实不是这样。Data Scientist要花大量的时间用SQL抓取数据,可能是做一些直接的分析,也可能是为建模做准备。

SQL是非常重要的技能,每一个公司的面试都会考。你需要熟悉掌握这些语句:Case when, Group by, Having, Self join, Left outer join, On vs Where等,这些是面试中比较常考的。在实际面试中,会问一些比较难的问题,比如Left outer join。大家一定要知道什么时候用Left outer join,以及on和where的区别。

--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END

--Case搜索函数 
CASE WHEN sex = '1' THEN '男' 
WHEN sex = '2' THEN '女' 
ELSE '其他' END
SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore
FROM student
GROUP BY id
HAVING AVG(score)>=80;

在这里,如果用WHERE代替HAVING就会出错

Case when也是用得非常多的语句,用于实现简单的逻辑功能,有时候会嵌套很多层。有些SQL问题乍一听比较难,并且你摸不着头绪,这时候可以试试Self join,这种问题往往用Self join可以解决。

参考:http://blog.csdn.net/u012861978/article/details/52203818

mysql> SELECT * FROM product LEFT JOIN product_details
       ON (product.id = product_details.id)
       AND product_details.id=2;

+----+--------+------+--------+-------+

| id | amount | id | weight | exist |

+----+--------+------+--------+-------+

| 1 | 100 | NULL | NULL | NULL |

| 2 | 200 | 2 | 22 | 0 |

| 3 | 300 | NULL | NULL | NULL |

| 4 | 400 | NULL | NULL | NULL |

+----+--------+------+--------+-------+

4 rows in set (0.00 sec)

mysql> SELECT * FROM product LEFT JOIN product_details
       ON (product.id = product_details.id)
       WHERE product_details.id=2;

+----+--------+----+--------+-------+

| id | amount | id | weight | exist |

+----+--------+----+--------+-------+

| 2 | 200 | 2 | 22 | 0 |

+----+--------+----+--------+-------+

1 row in set (0.01 sec)

从上可知,第一条查询使用 ON 条件决定了从 LEFT JOIN的 product_details表中检索符合的所有数据行。第二条查询做了简单的LEFT JOIN,然后使用 WHERE 子句从 LEFT JOIN的数据中过滤掉不符合条件的数据行。

self join 常用在同一表内不同数据间对同一列的比较 

select a.emp_no,a.emp_name,b.emp_no,b.emp_name,a.date_hired from
employee a join employee b 
on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired)     
order by a.date_hired 

这样会重复数据,只要加上一句 and a.emp_name>b.emp_name

A/B testing

实际工作中可能会大量地做A/B testing,而这恰恰是在学校涉及得比较少的。有很多拥有丰富的A/B testing工作经验的人会发一些博客,大家可以去读一读。

Machine Learning

最常用的两个模型是Linear Regression和Logistic Regression,需要熟悉它们的数学逻辑。其他的模型当然也要了解,但用得并不是特别多,比如Random Forest等。

A/B testing

AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。

Experiment Design

Data Scientist一般会和Product Manager合作设计实验,在设计实验的过程中,你需要思考实验中涉及到的Feature是想要改善哪个指标,在什么时候、呈现给哪些用户。在实际工作中,存在一些难度比较大的实验设计,这就要依靠Data Scientist的个人经验,也可以在博客中看看别人实际的工作经验。

Product Sense

产品的什么Metric是你最看重的。大家需要通过实习或者阅读文章来积攒经验,Quora上经常有关于这方面的讨论,比如某产品最关注的Metric是什么,以及为什么。

Business Sense

在实际工作中,原始数据会存在很多问题,你会找不到头绪。这时拥有一些Business Sense,比如对公司的核心指标比较敏感,会对数据分析有一些帮助。

Communication

沟通能力是把你的想法和发现分享给其他人的能力,可以通过更多的演讲和Presentation来锻炼。并且要根据你的听众选择不一样的讲述方式。如果你的听众是其他Data Scientist,你就可以介绍一些项目的细节。但如果是Director,他可能没有领域知识,不会对那些细节感兴趣,而是更看重结果,所以这时你就要用一些直白的话讲述你的发现。

Data Scientist的面试技巧

面试流程

现场面试会考数学的概率题,还有Product metrics,Product sense的问题。有的公司会考机器学习,有的公司会考一轮算法。关于编程技能,只要掌握Leetcode里Easy和Medium等级的题目就可以了。Data Scientist的面试不会涉及到Hard等级的题。

Case Interview

现场面试的两轮或三轮可能都会面Case Interview。在这里举两个Case Interview的例子。

第一个例子是,一个公司的核心指标是日活用户,而在过去的两周,这个指标降低了30%,面试官让你找出其中的原因。回答这种问题的关键点是要有框架和条理性,比较推荐的是从上至下,先制定High level的框架,再说具体的点并进行展开。你可以这么说,日活下降了30%,可能存在内因和外因,内因是公司内部的因素,外因是公司外部的、不可控的因素,这是一个High level的表述。然后说外因有哪些,比如现在是不是圣诞节期间,最近有没有什么新闻事件,转移大家的关注点。还可以分析用户的性别和年龄,是不是只有男性用户的指标跌了,或者是不是只有青少年的指标跌了。而内因方面,你可以说是不是网站有Bug,数据清理的过程中数据有没有Bug。对每一点进行具体的展开。

第二个例子是,你是一个共享单车公司的Data Scientist,现在你要和产品经理决定,接下来在哪些城市Launch新的单车项目。从High level上讲,共享单车包含两个元素,人和出行。人这一方面,每个城市人口的性别比例、年龄组成是我们要考虑的因素。比如可能老龄化严重的城市,骑单车的人数也相对较少。出行方面,可以考虑城市的环境、气候、地形等。比如伦敦经常下雨,有的城市的山地较多,这些可能会影响骑单车的人数。

多看Techcrunch

Techcrunch上经常有一些科技新闻,比如什么公司发布了什么新的Feature,阅读这些新闻可以帮助我们提高Product Sense和Business Sense。有时候面试会被问到你最喜欢的App是什么,如果你平时经常读这些文章,就可以积攒很多的思考,有助于面试时说出有洞察的见解。

results matching ""

    No results matching ""