说说 data challenge

最近在找data scientist的工作,大多数招DS的公司都有这个环节,我也是从去年找实习的时候做一个takehome跪一个到现在基本都能拿到onsite,来分享一下经验也给自己攒点运气。因为很多公司都不能share data,所以就不说具体的问题了,但是其实data challenge都大同小异,给一个或者几个data和几个business problem,让建模来解决。有的公司让提交report和代码,也有的公司是提交ipython notebook或者r markdown。我以前都不太能抓住重点,觉得takehome给的时间不长data也不算太大,所以总是想做点fancy的其他人想不到的东西,于是很多时间都花在并不熟悉的模型然后fit数据急急忙忙给个结果,report也并没有写的很详细,每次挂了OA都没有feedback所以也一直不知道是哪里做的不对。后来给machine learning当TA,判学生project的时候看了很多栗子才开始思考怎样才算很好的处理数据和展示结果,就总结了一些我现在用的套路希望可以帮到大家。

我一般会把report分成几个部分:

  1. Problem Overview 用自己的话复述问题介绍一下给的数据,最好能讲一下这个问题可以给公司带来哪些opportunity。

  2. 然后就是数据处理阶段了,数据处理应该占绝大部分的时间。列出来都有哪些variable,他们的类型,给出descriptive statistics summary,然后看分布找outlier看看每个variable的missing value比例,也要做multivariate study,看feature之间的联系,是不是高度相关可以互相代替,然后也要看看每一个feature和response variable的关系,哪些在data exploration阶段就可以看出来非常significant,哪些看起来像是noise。这一部分可以画很多图来给出直观的展示。

  3. 接下来就是建模了,其实在第二阶段impute完missing value去掉outlier做好这些preprocessing之后建模阶段很简单,先挑一个简单易懂的当做baseline model,然后定义好拿什么当evaluation metric看一下baseline performance,然后就可以套各种常规的或者fancy的model挨个看performance,选top的几个model继续parameter tuning,然后可以继续处理feature,比如说去掉correlated或者纯noise的feature,也可以自己加一些interaction term看看能不能提高model performance。最后选模型的时候能给出合理理由就可以了,比如evaluation metric特别高,运行速度最快,模型比较好解释,在各种情形下非常robust。基本上没有正确答案的,解释的能让人信服就可以了。

  4. 最后不要忘了conclusion。夸一下final model的优点,如何可以解决现有问题,最好可以结合公司业务讲一下business value,再给一下未来可以继续做的问题。

我大概的思路就是这样,如果有什么我没想到的点子也非常欢迎一起分享啊。