如今数据科学书籍、认证和文凭,如雨后春笋般层出不穷。但许多仅仅是镜花水月:许多人钻了这一新名词的空子,将旧酒(比如统计学和R编程)放在了“数据科学”这个新瓶里。本文选自《数据天才:数据科学家修炼之道》。
R语言编程跟伪数据科学为何扯上了关系?
R是一种有20多年历史的开源统计编程语言及编译环境,是商业化产品S+的后继者。R一直以来都局限于内存数据处理,在统计圈子里非常流行,并因其出色的可视化效果为人称道。一些新型的开发环境通过创建R程序包或者将其扩展到分布式架构里(比如将R与Hadoop结合的RHadoop),将R(限于在内存里处理数据)的能力扩大。其他程序语言当然也存在跟伪数据科学沾边的情况,比如说SAS,但不及R这么流行。说到SAS,它价格高昂,在政府机构或者实体企业的应用更为广泛。但在过去10年数据快速增长的领域(如搜索引擎、社交媒体、移动数据、协同过滤推荐等)运用不多。R跟C、Perl或者Python的语法不一样(后三者语法根源一样),其简易性使得写R的程序员比较广泛。R还有很多程序包和不错的用户界面,SAS却难学很多。
管理决策层在搭建其数据科学家团队时,有时也不是很清楚他们想要的到底是什么。
他们往往最终招募的是很纯粹的技术极客、计算机科学家,或者缺乏恰当大数据经验的人。人力资源部门对于数据科学的了解也不会好到哪里,因此导致更为严重的问题,他们给出的招聘广告就是不断重复类似的关键词:Java、Python、MapReduce、R、Hadoop和NoSQL。
数据科学真的就是这些技能的混合吗?
MapReduce只是一个将数据分解为子集,在不同机器上分开处理,并把所有结果集合起来,从而处理大数据的泛化框架。因此它涉及的是处理大数据的分布式框架,用到的这些服务器和设备则组成云(Cloud)。
Hadoop是MapReduce的一种实现,就像C++是面向对象编程的实现一样。
NoSQL意味着“Not Only SQL(意为不单只是SQL)”,是指能更新颖、更高效地访问(比如MapReduce)数据的数据库或数据库管理系统,有时它是作为SQL(标准数据库查询语言)之下的隐藏层而存在的。
除了MapReduce以外,还有其他框架——例如,图形数据库和环境,它们依赖于节点和边这类概念,来管理和访问数据(通常是空间数据)。这些概念并不一定是新的。在谷歌存在之前,分布式体系结构已被应用到搜索技术环境中了。15年前,我写Perl脚本进行哈希连接(一种NoSQL连接,用来连接或合并数据库中的两个表)。然而,现在一些数据库厂商提供的哈希连接,是SQL连接的一个快速替代品。哈希连接在本书后面还会讨论到。它们使用哈希表,并依赖于名称-值对的形式。我想说的结论是,有时MapReduce、NoSQL、Hadoop、Python(一种优秀的脚本语言,往往用于处理文本和非结构化数据)会被认为是Perl的后继者,但它们根源于几十年前就开发出的系统和技术,只是在过去的10年里变得更成熟而已,但数据科学并不只是这些。
事实上,你可以成为一名真正的数据科学家,且不需要掌握这些技能。NoSQL和MapReduce不是新概念——在这些关键词被创建之前,就有很多人接触到它们。
成为一名数据科学家,你需要以下能力。
- 敏锐的商业头脑。
- 真正的大数据专业知识(例如,可以在几个小时内快速地处理一个5 000万行的数据集)。
- 认知数据的能力。
- 对模型具有猜疑精神。
- 了解大数据“诅咒”。
- 有能力沟通并理解管理人员正在试图解决哪些问题。
- 能正确评估付你工资所能带来的回报(ROI)或效益提升(lift)。
- 能够快速地识别一个简单的、健壮的、可扩展的解决方案。
- 能够说服并推动管理人员,即使不情愿,也要为了公司、用户和股东的利益,转到正确的方向上。
- 真正热爱数据分析。
- 成功案例的实际应用经验。
- 数据架构知识。
- 数据收集和清理技能。
- 计算复杂度的基础知识——如何开发健壮的、高效的、可扩展的、可移植的架构。
- 良好的算法知识。
数据科学家在商业分析、统计学和计算机科学等领域也是通才,比如会掌握这些专业知识:健壮性、实验设计、算法复杂度、仪表盘和数据可视化。一些数据科学家也是数据策略师——他们可以开发数据收集策略,并使用数据来发现可操作的、能对商业产生影响的见解。这就要求数据科学家具有创造性,能根据业务要求,制定分析、提出解决方案。
要理解数据科学,所需的基本数学知识包括:
代数,如果可能的话,包括基本矩阵理论。
微积分入门课程。要掌握的理论不多,只需要理解计算的复杂度和O标记法即可。了解特殊函数,包括对数、指数、幂函数。微分方程、积分和复数不是必要的。
统计与概率的入门课程,要了解随机变量、概率、均值、方差、百分位数、实验设计、交叉验证、拟合度和稳健统计的概念(不需要了解技术细节,而是达到本书介绍的程度即可)。
从技术的角度,要掌握的重要技能和知识有R、Python(或Perl)、Excel、SQL、图形(可视化)、FTP、基本的UNIX命令(sort、grep、head、tail、管道和重定向操作符、cat、cron定时等),以及对如何设计和访问数据库有基本了解。了解分布式系统如何工作和在哪里能发现瓶颈(是在硬盘和内存之间的数据传输,还是在互联网上),这也很重要。最后,要了解网络爬虫基本知识,这有助于获取互联网上能找到的非结构化数据。
伪数据科学的例子
这里有个伪数据科学的例子,说明数据科学家要开展工作,为什么需要遵循标准和最佳实践。这里讨论的例子,并不是说它们是不好的产品——实际上,它们有很多的内在价值——但跟真的数据科学无关。原因有以下两点:
首先,部分统计学家没有参与到大数据革命中。虽然有些人还写了关于应用数据科学的书,但只是重新包装原来的统计课程。
第二,适合大数据集的方法需要变化——按2005年的大数据定义,当有2 000万行数据时,才有资格成为大数据——但2010年后不能再这样划分,因为大数据至少是TB级的。
不少人认为数据科学是统计学的一个新名字,他们把数据科学和伪数据科学,以及2005年的大数据定义与2013年的大数据定义弄混淆了。现代数据也有很大的不同,已经被描述为3个V:速度(velocity)(实时、快速流动)、多样化(variety)(结构化、非结构化,如微博内容)和大数据量(volume)。我会增加真实性(veracity)和价值(value)。
例子:
某一本数据科学电子书
查看一所著名大学2012年的数据科学训练手册,书的大部分内容是关于旧的统计理论。这本书用R来说明各种概念。当用逻辑回归处理仅仅1万行数据时,并不是大数据科学,它是伪数据科学。这本电子书全部关于小数据,最后几章例外,在那里你会学到一点SQL(嵌入在R代码中)的知识和如何使用R包从Twitter提取微博内容,且创造出作者所说的词云(它和云计算没关系)。
即使提取Twitter内容的项目也还是小数据,也没有分布式体系结构(例如,MapReduce)。事实上,该书从来没有谈到数据架构。该书的水平是初级的。每章以简单的方式(适合高中学生阅读)简短介绍大数据和数据科学,跟该书实际涉猎的小数据科学不搭,跟项目和技术展示脱节。
也许作者增加了这些简短的段落,是为了可以将他的“R统计”的电子书,重新改名为“数据科学的介绍”。它是免费的、很好的、写得很棒的书,且会使高中学生对统计和编程感兴趣。但它与数据科学无关。
本文作者:佚名
来源:51CTO