回复读者来信

趁着中秋期间,终于能抽一些闲暇的时间(感谢我的太太),集中整理了一下邮件。有朋友邮件问到自己正在从事、或即将进入数据科学领域时,碰到的困惑。再回想,这几年也经常面试候选人,每当我以抱歉结束时,很多为候选人也问过很多类似的问题。那我在这篇博文里集中回答一下。

第一位

统计背景的同学,邮件的问题如下:

(省略……) 经过很长时间的探索和思考,我觉得自己的兴趣点正是您现在的兴趣研究方向:数据分析、数据挖掘和数据可视化。然而,就现在来讲,大多数高校的统计专业都是在教授 以“样本估计总体”为核心的传统统计,但是很明显,这已经逐渐不适应如今到来的大数据浪潮,并且,最重要的是我想做 以数据驱动为核心的现代数据分析领域。(应该就是您现在做的这块工作)。但我却不知道该向何方发展自己,从哪里找到大数据分析中 统计知识与计算机技能的平衡, 我该如何从传统统计的基础出发(有一点SQL,R语言,数据仓库的基础),来走到正式的数据分析的路?我该读什么书?该听什么课?该具备什么样的技能? (省略……)

回答如下:

  1. 作为一个统计系的学生必然要将“所有的”统计知识了解的非常清楚,而且编程能力一定要有(不一定是纯 C 或Java,但 R 是必须要求的)。要清楚所有涉及的统计理论的思想,如果是偏重高级应用的话(比如算法工程师,数据挖掘顾问)用顺手的语言将统计算法实现也是有一定要求的。
  2. 数据清洗这活儿虽然有脏又累,但一定要懂,一定要熟悉。从经验上看,数据清洗(包括理解数据),会占到日常工作的90%以上。通过观察数据可以看到很多有意思的现象。我们团队经常根据一张图来就能讨论个把小时,每个参与的人都非常兴奋。可以想象好不容易搞到的数据,因为没有处理合适,最后建模失败是多么可惜的事情。具体上学的时候比较熟悉MySQL类的开源数据库即可,工作以后很多工具都是相通的。
  3. 多问自己几个问什么,这点非常重要!想象一下正态分布、T分布、假设检验为什么会成为统计课程里面必修,回归为什么是统计专业的基石,为什么前人可以想到用这么巧妙的方法来拟合现实。我们在工作中遇到的问题本质是什么?通过什么数据结合什么方法可以解决?国内高校教育有个很大的问题,在讲像天书的公式之前很少提及要解决的问题是什么,结果常常导致学生学会之后也不会有贯通的应用。但如果我们了解背景之后,就会发现其实在高校学到的任何统计学技巧都可以在工作中应用。勤于思考,会有很多帮助。
  4. 工具的话推荐用 R,工作这么多年,至今还没有什么数据问题是R搞定不了的。站在巨人的肩膀上看的才远。当然前提是要对 R有足够深刻的理解。
  5. 书的话网上有很多现成的,不用贪多,尽量找一本成体系的精读一遍,会很有收获,比如我们近期翻译出版的《R语言核心技术手册》。还有吴喜之老师的书建议见一本买一本。
  6. 想学习某个领域的话,公开课非常多,比如 coursera 的,我特别羡慕你们上学有大把大把的时间。
  7. 从事数据科学的目标一旦确定,迅速找到一个圈子,多分享,很快就成成长起来。

第二位

另外一位朋友,并非数据专业出身,摘要如下:

(省略……) 之前没有数据分析的经历,只是这几个月看了些数据分析及大数据的书籍,感觉还是有点空,有点泛。那像我这种情况,该怎么准备才能进入数据分析行业呢?我是该主要学习R、统计知识?还是主要学习编程语言? 另外,很多IT公司也招数据分析人员,但他们更强调c++,python等编程语言、Hadoop、算法等,这些是数据分析师必需的工作吗?会不会他们做的是纯IT类的工作而和真正的数据分析无关?这个工作内容离数据分析远吗?我该进入什么样的公司才能真正做数据分析呢?我该具备哪些素质和知识呢? (省略……)

上一个问题的回答应该能够覆盖一部分问题。为什么很多IT公司招数据分析人员更强调底层编程语言这个单独回答一下:

首先说,这是一个不健康的行业现象,曾几何时,统计学家在很多机构部门都是非常重要的角色,但近些年随着BI部门的兴起,大量工程背景的计算机系同仁发现了并因为工作的便利性逐渐占领了数据这片金矿(简单说就是什么样的领导招什么样的人)。于是就演变成我们看到的这种现象。这样的配置是有问题的,考虑到人员结构的演化,估计5-10年内才能有比较明显的改观。

从企业数据部门职能上看,一般是以下四个模块:

业务 - 数据 - 模型 - 工程

由于精力所限和专业细分,CS背景的童鞋主要关注后三点,或者说他们更关注的数据流和控制流。但对于统计系的童鞋则是主要关注前三点,重点在于业务的描述和推断。两拨人必须紧密合作才会有更好的产出,争谁最重要是没意义的。

虽说有各有侧重点且互为补充,但因为共存,所以对于统计背景的童鞋还是要必备一些基础的计算机知识的,不然工作中会有很多麻烦。拿个例子来说比如 丽云的博客-落园,从内容上看有 R,html,Linux,Python,Teradata 林林总总,还有各种 paper 的笔记,大部分应该是工作的沉淀。丽云实际上是 Ebay 的数据分析师,且是经济学背景的。

还有一块儿能力很少提及,就是所谓的沟通甚至管理能力,见这条微博。这直接决定了数据(分析)项目最终的成功与失败。

杂谈

因为工作之便,我常在观察和思考:计算机系的朋友们思考数据的本质的时候,都在注意什么。摘几个花絮大家感受一下:

  • 某次数据科学的研讨会张栋老师(前百度凤巢架构师)的最后一句总结:All models are wrong, but some are useful。其实这是统计学家 George E. P. Box 在1987年在 Empirical Model-Building and Response Surfaces 提到的观点。
  • Kaggle、阿里的算法大赛等(当然包括我们也是)取得好成绩的人大部分都是在使用 Random Forest, GBDT, Elastic Net,其实这三种方法都是统计学家提出的,不过大量在被计算机系的童鞋拿去打怪也是挺有意思的现象。
  • 八卦:计算机的人爱说 - 阀值;统计的人爱说 - 阈值。

最后与诸君共勉:

一个好的数据分析师必然是半个合格的程序员,一个好的程序员也必然是半个合格的数据分析师。