数据行业发展非常快,企业的要求也在迅速更新。 现在企业对数据科学家/工程师的要求有哪些变化? 自学数据科学/数据工程需要避开哪些误区呢?
自学误区1. 数据科学==Machine Learning
这是最易陷入的自学误区。很多DS社区和群组,讨论最热烈的话题就是各种Machine Learning的模型使用技巧,甚至还形成鄙视链:做Neural Networks的跟Deep Learning沾亲带故,瞧不起万金油Random Forest。Random Forest觉得自己是钦定的“不用太调参都可以取得较好结果”模型,于是瞧不起“数据一多,调参就崩溃”的Support Vector Machine (SVM). SVM觉得自己的理论推导非常有深度,于是瞧不起只有一页推导的Logistic Regression。结果别人 Owen Zhang拿着Logistic Regression刷刷刷就拿到Kaggle世界排名第一。
比较哪个ML模型最优是没有意义的。首先大家都知道没有一种模型是万能的,肯定要根据具体数据的特征来决定采用什么模型。更重要的是,ML是数据产品的最后一环了,在ML之前,还有数据清理,之前还有数据采集,之前还有产品目标定义。在公司里面,这些才是数据科学的完整链条,前面的每个步骤都要花费大量的人力物力去完成,只强调ML那是完完全全的误导,我之前反反复复强调过这点(搜一下《关于数据竞赛的一点思考》)。
自学误区2. 以为不是数据工程师就不用学分布式系统
实际上,公司里面的DS要进行大量分布式系统下的数据操作。公司巴不得每人都既是DS又是DE。理论上的DS与DE的分工,在中小公司的实际操作中,是比较模糊的。
我们DS项目有一位统计master的学员,毕业后以DS的头衔进入一家NLP相关的中型公司。她最近跟我微信说,现在天天跟分布式系统下面的数据工具pig, hive打交道,天天都在用PuTTy去连服务器, 都快把Machine Learning给忘了。同期的另一位master背景的DS学员因签证问题回国工作,在工作中也被老板直接当成DE来用。幸亏数据应用学院对这方面的内容早有准备。从今年1月的班开始,我们就已经在给DS学员普及分布式系统下的数据操作要点。9月份的班,更把教学期时间拉长了2周,专门强化训练分布式系统下数据操作的技能。
那数据工程师来干嘛?数据工程师更得一专多能,你没看见机柜后面拿着改锥在装服务器的赵工吗?
自学误区 3. 初学者应弯道超车学习Deep Learning
这是完全没必要的。
现在很多CS硕士和博士研究方向才是DL相关,对于初学者来说,这个方向太深奥了,自己学基本上浅尝则止。而企业里面虽然有一定的DL需求,应用也很酷炫,又是人工智能,又是图像识别,但这些岗位都要求候选人在DL上有深厚的积淀,对于非CS专业,转行进入数据科学领域的申请人来说,应聘这样的岗位不现实。而且,实际操作上,DL要跟GPU计算结合起来,GPU
计算又是另外一个耗时耗力耗财的领域。数据求职者要学的东西太多,时间很紧张,花在GPU这上面,不值得。Richard Xie(职位是Principle Data
Scientist)在换工作后写了一篇感触(《一个数据科学家下岗之后的故事》),文中也建议,在求职准备时,重点不要集中在Deep Learning上。还是让更专业的人来解决DL这些问题吧,已经够他们头疼的了。
自学误区 4. 只有数据工程师需要刷算法题,DS/DA不需要刷题
数据工程师绝对是要刷算法题的,这一点我们从去年6月份就在强调,之后还在带着DE学员刷。但对于DS/DA,事情正在起变化。现在有部分公司在招聘普通DS时,甚至在招聘DA时,都拿几道简单都leetcode来刷一下人(请你找出数列中前十个最大的数)。
我们认为,应聘DS/DA的非CS背景求职者,不用惊慌。这些算法题目是非常简单的,稍微关注一下就可以了。不用跟数据工程师一样,花大量时间去刷leetcode。而我们的大数据工程师项目班,专门配备了算法老师,带你刷,带你练。