趁着中秋期间,终于能抽一些闲暇的时间(感谢我的太太),集中整理了一下邮件。有朋友邮件问到自己正在从事、或即将进入数据科学领域时,碰到的困惑。再回想,这几年也经常面试候选人,每当我以抱歉结束时,很多为候选人也问过很多类似的问题。那我在这篇博文里集中回答一下。
统计背景的同学,邮件的问题如下:
(省略……)
经过很长时间的探索和思考,我觉得自己的兴趣点正是您现在的兴趣研究方向:数据分析、数据挖掘和数据可视化。然而,就现在来讲,大多数高校的统计专业都是在教授 以“样本估计总体”为核心的传统统计,但是很明显,这已经逐渐不适应如今到来的大数据浪潮,并且,最重要的是我想做 以数据驱动为核心的现代数据分析领域。(应该就是您现在做的这块工作)。但我却不知道该向何方发展自己,从哪里找到大数据分析中 统计知识与计算机技能的平衡, 我该如何从传统统计的基础出发(有一点SQL,R语言,数据仓库的基础),来走到正式的数据分析的路?我该读什么书?该听什么课?该具备什么样的技能?
(省略……)
回答如下:
任何
统计学技巧都可以在工作中应用。勤于思考,会有很多帮助。另外一位朋友,并非数据专业出身,摘要如下:
(省略……)
之前没有数据分析的经历,只是这几个月看了些数据分析及大数据的书籍,感觉还是有点空,有点泛。那像我这种情况,该怎么准备才能进入数据分析行业呢?我是该主要学习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,其实这三种方法都是统计学家提出的,不过大量在被计算机系的童鞋拿去打怪也是挺有意思的现象。
八卦:计算机的人爱说 - 阀值;统计的人爱说 - 阈值。
最后与诸君共勉:
一个好的数据分析师必然是半个合格的程序员,一个好的程序员也必然是半个合格的数据分析师。