【嵌牛导读】:目前数据科学和数据科学家成为了流行词汇。当有人问你干什么,你回答说数据科学家,对方会恍然大悟,觉得特别高大上,噢,数据科学家啊,听说过。是啊,没听说过数据科学家那就out了。如果接着问,数据科学家具体干什么的?然后就没有然后了。
【嵌牛鼻子】:大数据;数据科学
【嵌牛提问】:什么是数据科学?特点?
【嵌牛正文】:
什么是数据科学
50年前,John Tukey他老人家就预言有个类似今天的数据科学的东西会出现。早在1962年,他在“数据分析的未来(The Future of Data Analysis)”中就嚷着要对学术统计进行改革。这篇文章当时发表在“数理统计年鉴(The Annals of Mathematical Statistics)”上,他的观点震惊了许多统计界的同事,这都是一群根正苗红的数理统计出身的大神们,那时数理统计年鉴中的文章都是满满的数学公式推导,从定义、定理到证明,逻辑缜密,理论精确。当然牛人最大的特点就是可以随时任性。John推导了大半辈子公式,突然有一天发现统计不是这么玩的,于是他跳出来说:
“很长一段时间我觉得自己是统计学家,对统计推断情有独钟,将从小样本上研究得到的结论推广到更大的群体。但随着数理统计的发展,我越发觉得这个路数不大对……总的来说,我觉得自己感兴趣的是数据分析,它包括:分析数据的过程,解释该过程得到结果的技术,合理计划收集数据的方案,使得之后的分析过程更方便准确,以及所有的分析中需要用到的仪器和数学理论。”
用简短的一句话概括就是:仅仅研究数学理论不是数据科学,数据科学的内容涵盖更广。
美国密歇根大学在2015年9月宣布了一个1亿美金的“数据科学项目(Data Science Initiative)”,计划在未来4年聘请35名新教授,支持与数据相关的跨学科研究。大学媒体大胆地宣称:
“数据科学已经成为第4大科学发现手段,前3个为:实验、模型和计算。”
这里的数据科学指的是什么?该项目的网站上有如下对数据科学的描述:
“数据科学是科学发现和实践的结合,其包括对大量类型各异的数据进行收集、管理、清理、分析、可视化和结果解释。其应用遍及各种科学、平移和交叉领域。”
如前所述,数据科学是一个新兴领域。在美国,对数据分析类专业人才的需求不断上升。研究估计[2],从2015到2018年,美国预计有400~500万个工作岗位要求数据分析技能,大部分这些岗位的人才需要经过特殊训练。前面已经介绍过各种和数据分析相关的行业,这些行业对专业训练的要求参差不齐。其中数据科学家的门槛是最高的。成为一个数据科学家不是件容易的事。不可否认,即使是数据科学家这个职业名称,当前也被滥用了。这些工作的本质都是从数据中获取信息。
我是这样定义数据科学的:
数据科学=数据+科学=从数据中获取信息的科学
这是一门新的科学,有各种因素推动了这门科学的产生。John提到了如下的4个驱动因素:
正统统计学理论;
计算机和电子显示设备的高速发展;
很多领域内更多更大的数据提出的挑战;
定量分析在更广的领域受到重视。
很难想象这些观点是在1962年提出的,现在看来一点也不过时。当前这4个推动力都已经存在,这也是数据科学兴起的原因。
7年之后,Tukey和Wilk在1969年又将这门科学和已经存在的科学进行对比,进一步限定了统计学在数据科学中所扮演的角色:
“……数据科学是一个困难的领域。它需要和人们能用数据做什么和想用数据做什么这样的外在条件相适应。从某种意义上说,生物比物理困难,行为科学比这两者都难,很可能总体数据科学的问题比这三者还要难。无论在现在还是短期的将来,要建立一个正式的能够给数据分析实践提供高效指导的数据科学的结构还有很长的路要走。数据科学可以从正规正统统计学那里获得很多,但它们之间也需要保持适当的距离。”
数据科学不仅是个科学领域,而且和其他已经存在很久的科学领域一样困难。统计理论只在数据科学中扮演了部分角色。
但数据科学是纯科学吗?
什么样的东西能够称为科学?我们看看John Tukey在50年前是怎么说的[1]:
怎样才能称为科学呢?回答因人而异。但下面3点大多数人都同意:
智力内容(intellectual content);
用能让人理解的方式组织起来;
实践是检验其结果的最终标准。
第1条没有提供太多的信息,毕竟太多东西都有智力的内容,这个没有区分度。
第2条也没有办法将科学和艺术区别开来。
第3条我觉得才真正是区分科学和艺术的硬标准,也就是可证伪性。
数据科学符合前2条,但是不总是可以证伪的。对于预测消费者是否会再次购买这样的问题,可以用真实发生的行为来评估模型表现。以及很多交互校验(cross-validation)的过程也能够用来评估模型。但对于很多市场调查数据的分析,就难以严格地科学证伪,比如分析消费者的品牌认知。对于人类心理学和行为学的研究本身就是有艺术的成分,因此相关的数据科学也同时是一门艺术。但是这和瞎猜并不一样,或许可以这样描述:这是在当前信息下能得到的最好猜测。
计算机科学之父高德纳(Donald Knuth)在他1974年出版的图书《计算机程序设计的艺术》中如此定义科学:
“能够教给计算机的知识就是科学。”
从这个角度上看,数据科学的艺术部分就更高了。计算机是数据科学不可或缺的一部分,可以说是最重要的一部分,但绝对不是全部。我们能完全依赖计算机取代数据科学家吗?很难。因为计算机不能和客户交流,将一个现实的商业问题转化成数据问题。计算机本身并不能决定什么数据应该收集,什么不需要。计算机无法对数据的质量做出评估。计算机无法向人解释模型结果,更无法将模型结果转化成商业决策建议。
因此数据科学还有艺术的一面,艺术部分的发挥就需要数据科学家啦!
什么是数据科学家
数据科学家=数据+科学+艺术家=用数据和科学从事艺术创作的人
数据科学家立足于科学,但不止于科学。从数据中提取出信息无疑是重要且有意义的过程,但这还不够。因为分析的终极目标是能够解决问题,实现价值。而从信息到具体应用领域的知识,进而应用所得知识创造价值,这两步都是需要一些艺术的,需要一点想象力。在第3章“数据分析流程”中我会进一步讨论这个职业中艺术的部分。科学家需要不断学习,数据科学家是一个需要终身学习的职业,其实很多职业都要求这一点。当然,你进入这个领域之前有一个门槛得要跨过去,有些基本的技能需要掌握。上面关于数据科学以及数据科学家的定义听起来非常高大上,可能有些抽象,感觉自己是个文艺青年。其实也可以用一种更接地气的方式表达:
数据科学=从数据中得到问题答案的科学
数据科学家=通过科学方法从数据中得到有实际意义的问题答案的人
数据科学结合了一整套科学工具与技术(数学,计算,视觉,分析,统计,试验,问题界定,模型建立与检验等),用于从数据收集中获得新发现、洞察与价值。使用数据科学的根本目的是解决实际问题。David Donoho在他2015年的文章《数据科学50年(50 years of Data Science)》[3]中讨论了当今数据科学的全貌,其中他将数据科学这个大领域分成6块:
数据探索和准备;
数据表示和变换;
数据编程计算;
数据建模;
数据可视化和展示;
数据科学的科学。
而一个合格的数据科学家,应该掌握这6个子领域的相关技能。
数据科学家需要的技能
在之前介绍北美各种和数据分析相关职位要求的时候,从技术层面上列举了一些数据科学家需要的技能。现在进一步讨论下这个职业需要的不同方面技能。
首先谈谈数据科学家的教育背景。数学、统计、计算机或其他定量分析学科(电子工程,运筹学等)的本科以上学历是必需的。
根据2015年的统计数据,美国的数据科学家48%有博士学位,44%有硕士学位,只有8%是本科。研究生博士期间的课题最好偏向机器学习、数据挖掘或预测模型。其次需要数据库操作技能,在工作中通常需要用SQL从数据库读取数据。所以能熟练使用SQL是基础。对于统计或者数学专业的学生,在校期间可能不需要使用SQL,因此不太熟悉。这没有关系,我也是工作以后才开始使用SQL的。但你要确保自己至少精通一种程序语言,之后遇到需要用到的新语言可以迅速学习。在学校期间的主要目的不是学会毕业后所需的全部技能,这是不可能完成的任务。
高等教育(本科、研究生和博士)后应该具有的是基本的专业知识和自学能力。数据科学和很多其他领域一样,需要终身学习。有很多人问,要成为优秀的数据科学家是不是一定需要博士?这个问题很难用简单的是或者不是来回答。我看到的大多数优秀数据科学家确实都有博士学位,其余也都是硕士。我并不是要说高学历是成为优秀数据科学家的必要条件,其实真正重要的不是那个学历本身,而是拿到那个学历的过程,以及会选择获得这些学位的人共有的一些特质。
在美国,一般情况下,如果你拿到数理专业的博士学位,至少说明一个问题,就是你对学习的东西有兴趣。这样成天在电脑前面分析数据、编写程序的生活,对于那些对此不感兴趣的人来说必定是难以想象的痛苦。其次是研究生期间系统的理论训练。很多人可能觉得模型背后的数理知识不重要,只要会用模型就可以。统计软件使得很多模型使用者不需要知道具体的模型原理。了解模型原理是否能够帮助你更好地使用模型?当然会有帮助。但问题是这个帮助有多大?是不是值得我们花几年时间去学习?学习很多东西的好处是很难用短期去衡量的。我没有严格的分析,只是个人觉得了解模型原理是必要的。我很喜欢一个词“匠人精神”,也很乐意将“数据科学家”称为匠人,这是一种精益求精的精神。当然这种精神和学位没有必然联系,有本科毕业而对数据科学很感兴趣,自己学习也能够对这个学科有很深的理解。但大多数对这个领域感兴趣又具有“匠人精神”的人都有相关领域的更高等学历。最后,当然就是学习的能力。即使拿到博士学位,也不意味着学完了所有知识,而是具备了进一步自学的能力,可以自己看懂数据分析新方法的论文,也就是具备了在这个领域发展的自学能力。总的来说,这个领域的高学历现象并不能说明学历是必要条件,也不是充分条件。真正重要的是兴趣、匠人精神和自学能力。
编程能力也是数据科学家需要的基本技能。熟练使用一种编程语言是必需的,如R,Python,C等。有人可能会问,只会SAS够不够?个人意见是:不够。这里不想对SAS进行过多评价。我的建议是大家至少要熟悉一门开源语言。当然,这些都只是工具,工具是解决问题的手段,而非目的。你必须要有一个能用来进行数据分析的工具,偏好因人而异,但你选择工具的时候最好考虑工具的灵活性和可扩展性。
接下来就要提到具体的分析技能。数据科学家应该掌握高等概率统计,能够熟练进行t检验、开方检验、拟合优度检验、方差分析;能够清楚地解释Spearman秩相关和Pearson相关之间的区别。熟悉抽样,概率分布,实验设计相关概念;了解贝叶斯统计(很快就能在白板上写下贝叶斯定理);知道什么是有监督学习,什么是无监督学习;知道重要的聚类、判别和回归方法;知道基于罚函数的模型,关联法则分析。如果从事心理相关的应用的话(如消费者认知调查),还需要知道基本的潜变量模型,如探索性因子分析,验证性因子分析,结构方程模型。这个单子还可以一直列下去。看起来是不是不只一点吓人?我说过,数据科学家不是一个低门槛的行业,之前需要接受的训练对于没有兴趣的人来说是无比痛苦的。还有,单子是动态的,因为你在工作过程中还需要不断学习。这些技能只是让你能够很好地开始。再次强调自学能力和成为一个终生学习者是优秀的数据科学家的必要条件。
除了技术能力以外,还需要其他一些非技术的能力。这些包括将实际问题转化成数据问题的能力,这一过程需要交流,也就要求良好的交流沟通能力。关注细节,分析是一个需要细心和耐心的职业。还有就是展示结果的能力,如何让没有分析背景的客户理解模型的结果,并且最终在实践中应用模型的结论。如图1-2所示的“数据科学家技能表”