星期一, 十一月 28, 2011

什么是数据科学(Data Science)


何谓数据科学?在wikipedia中你还找不到Data Science的词条,但它将成就你的未来。

谷歌首席经济学家Hal Varian在2009年说,下一个十年最有吸引力的工作就是统计学家。能获取并处理数据,从中得到有用信息并能图形化,并使人们得以理解,这将是非常重要的技能。在此处他所称的“统计学家”,实际上是能够提取大数据集的信息,然后展现给非数据专家的那些人,我们也可称之为数据极客(Data Geek)或是数据科学家(Data Scientists)。

一、数据科学的构成
数据科学的组成要素可以从下面这个维恩图得到线索。它包括了计算机技巧,数学和统计知识,实质性的专业知识。


你不一定要拥有计算机科学的学历,但数据是电子化交易的商品,所以你需要了解一些极客技能。这些技能包括:Linux知识,能够操纵文本文件的命令行,了解矢量操作,算法的思想,这些技巧都是数据极客所需要的。

一旦你已经获得并清理好数据,下一步就是从中提取有用的知识。此时你需要运用适当的数学和统计方法。这并不是说你要成为统计学博士,但你确实需要知道普通最小二乘回归之类的东西,以及如何解释其结果。

在第三个关键是专业领域的知识背景。如果数据分析只是你的业余爱好,那么只捣鼓数学、机器学习和统计数据也就够了。但如果你从事数据科学的工作,这就要求从专业背景上提出问题,并用数据和统计方法进行检验,这样才能真正的发现并构建知识。

最后,要注意的是黑客技能加专业知识的危险区。这里所描述的是那些“半桶水专家”,他们知道如何得到合适的数据,甚至掌握如何用R语言进行线性回归并报告系数,但他们不理解那些系数的真正含义。在不了解内在统计意义时进行数据分析是危险的,这也是数据分析经常被滥用情况。

二、数据科学家的能力
“数据科学家”的工作自然定义了数据科学。他们的工作涵盖了从数据收集到数据整理,应用统计学和机器学习等相关技术,对数据进行解释、沟通和可视化。

数据科学崛起的原因之一是因为技术进步,这使数据科学家很容易获得广泛的专业知识。在10年前如果某个人能整合多个数据库进行多层回归,并生成一个优美的图形,这被认为是非常罕见的。

原因之二是因为职业棒球数据分析师所起的表率作用。商界领袖喜爱用体育来打比方和举例子,职业体育领域的数据分析使得数字能击败直觉,所以它立即受到大家的关注。

数据科学家有三个重要技能:

1)计算机能力:数据的获取和整理
  • 数据整理。任何数据分析项目的第一步是数据整理,对应着数据获取、清洗、格式转换等工作,使之成为可用数据。现在有各种各样的数据格式:数字、表格、Web网页、文本,甚至包括语音和视频。在处理凌乱的原始数据时,脚本语言(例如Perl和Python)是必不可少的。
  • 大规模数据。传统的关系型数据库在大规模数据条件下已经不在有效。为了有效地存储庞大的数据集,我们看到的数据库出现的新品种。这些通常被称为非关系数据库,例如谷歌的BigTable和Amazon的Dynamo,它们有非常灵活的架构设计,分布在多个节点,以提供“最终一致性”。
  • 存储数据只是数据平台建设的一部分。在目前的大规模数据集计算问题上,谷歌推广MapReduce方法,基本上它是利用非常庞大的计算集群进行分布计算。最流行的MapReduce开源实现方法就是Hadoop。Hadoop使“敏捷”数据分析成为可能。在软件开发中,“敏捷”意味着更快的产品周期,开发商和消费者之间更密切的互动。传统的数据分析需要极长的周转时间。它可能要几个小时、甚至几天才能完成。但是在Hadoop帮助下可以很容易地建立集群,以执行大规模数据集的迅速计算。更快的计算速度使你更容易地测试不同的假设,不同的数据集和不同的算法。

2)数学和统计学能力:数据的挖掘
  • 机器学习是数据科学家的另一项必不可少的工具。目前有许多机器学习库可以利用:在Python中有PyBrain,在Java中有WEKA,谷歌刚刚宣布了他们的Prediction API,使其机器学习算法得以公开使用。Stanford的机​​器学习课程,是计算机科学中最流行的课程之一,推荐学习。
  • 虽然在这里没有强调传统的统计模型在数据分析中的重要作用,但是统计是“数据科学的语法”。它是至关重要的。数据科学不只是获取数据然后来猜测其意义,它也包含了假设检验,确保你的数据结论是有效的。统计已成为一项基本技能。它并没有被机器学习或商业智能所取代。
  • 虽然有许多商业统计软件包,但开源R语言是一个不可或缺的工具。虽然R是一个奇怪的语言,但它为大多数统计工作提供“一站式购物”。它还具有出色的绘图功能。 CRAN中包括了多种类型的数据解析器和分布式计算扩展。如果有一个单一的工具,能为统计工作提供了一个最终解决方案,那就是R语言。

3)图形可视化:数据的提炼和展现
一张图片胜过千言万语,可视化是数据分析的初步探索工作,也是每个阶段的关键。FlowingData博客是一​​个寻找创意可视化非常棒的地方。这也是我的最爱之一,这个可视化例子就是随着时间的推移,沃尔玛增长的动画。这就是数据可视化的艺术。

三、数据科学家的职业生涯

对数据科学的定义也是从其职业生涯角度来看的,一个典型的职业路径可能是从编程开始学习,然后在科学领域花了一段时间,围绕着各种不同的角色,然后学会多种不同的技能,所有这些都涉及到使用分析技术,以便理解数据。

这种职业路径不是特别新,但它现在可能使你能快速而廉价地开展科学数据工作。高速计算机,开源工具,和一些编程技巧​​允许我们快速的尝试一种新型数据管理方法或一种新的机器学习技术,直到找到问题的解决方案。

这里就存在两个方面的后果。首先,现代数据科学家的生产力显著增加了。数十年前需要一个团队工作几年的项目,现在几天内就能完成。其次,这个惊人的生产力,可以使人们的时间更多的花费在数据科学的垂直整合过程中,而不必花在单一方面的技能学习上。在以往成为数据科学量需要学习大量的东西,但现在你不用成为某个方面的大师也能快速获得这些技能。

参考资料:
http://www.drewconway.com/zia/?p=2378
http://www.harlan.harris.name/2011/09/data-science-moores-law-and-moneyball/
http://flowingdata.com/2009/06/04/rise-of-the-data-scientist/
http://radar.oreilly.com/2010/06/what-is-data-science.html

星期三, 十一月 23, 2011

R语言基础入门之六(完):Logistic回归

让我们用logistic回归来结束本系列的内容吧,本文用例来自于John Maindonald所著的《Data Analysis and Graphics Using R》一书,其中所用的数据集是anesthetic,数据集来自于一组医学数据,其中变量conc表示麻醉剂的用量,move则表示手术病人是否有所移动,而我们用nomove做为因变量,因为研究的重点在于conc的增加是否会使nomove的概率增加。

首先载入数据集并读取部分文件,为了观察两个变量之间关系,我们可以利cdplot函数来绘制条件密度图.

星期五, 十一月 18, 2011

R语言基础入门之五:简单线性回归

线性回归可能是数据分析中最为常用的工具了,如果你认为手上的数据存在着线性定量关系,不妨先画个散点图观察一下,然后用线性回归加以分析。下面简单介绍一下如何在R中进行线性回归。

1 回归建模
我们利用R语言中内置的trees数据,其中包含了Volume(体积)、Girth(树围)、Height(树高)这三个变量,我们希望以体积为因变量,树围为自变量进行线性回归。

星期四, 十一月 17, 2011

如何从EXCEL和SPSS导入数据到R

做分析没有数据真是一大悲剧,正是无源之水、无根之木再加上无米之炊。通常我们搜寻到的数据格式主要有文本格式、Excel格式和SPSS格式。当然也会有从数据库等其它途径进来,这不在本文讨论范围内。

一般的文本格式导入,都可以用read.table命令把数据扔进R里面。Excel和Spss数据的话,可用相应软件将文件打开,观察数据结构后将其复制到剪贴板,然后一样可以用read.table('clipboard')扔到R里面。如果文件太大不好复制,那么可以利用Excel和Spss的导出功能,将数据导出成文本格式。

还有一种情况就是,你的计算机上没有安装Excel或是Spss,这数据导入就要用到RODBC扩展包了。首先装载RODBC包。然后输入数据文件的绝对路径(要注意是用/而不是\)来定义连接,最后用数据抓取命令获取你需要的标签页数据内容(Sheet1)。

星期三, 十一月 16, 2011

R语言中的色彩

统计学家经常唠叨这样一句话,“一张好的图片胜过千言万语。”绘图正是R语言的强项。其中的基本绘图命令就包括了大量的参数配置,完全可以满足各种出版物的需要,更何况还有lattice和ggplot2这两大格点绘图包的存在。国外媒体包括CNN都在利用R的强大绘图功能展现数据之美。优秀的图形表达离不开丰富的色彩搭配,让我们初步了解一下R绘图中的色彩设置。

让我们随便弄个饼图先
pie(rep(1,10))

星期日, 十一月 13, 2011

R语言基础入门之四:常用的统计推断

通常一个研究项目能够获得的数据是有限的,以有限的样本特征来推断总体特征就称为统计推断。推断又可细分为区间估计和假设检验,二者虽有区别,但却是一枚硬币的两面,之间有着紧密的关联。

1 对总体均值进行区间估计
假设我们从总体中抽得一个样本,希望根据样本均值判断总体均值的置信区间,如下例所示:
x=rnorm(50,mean=10,sd=5)  #随机生成50个均值为10,标准差为5的随机数为作为研究对象
mean(x)-qt(0.975,49)*sd(x)/sqrt(50)  #根据统计学区间估计公式,得到95%置信度下的区间下界
mean(x)+qt(0.975,49)*sd(x)/sqrt(50)  #95%置信度下的区间上界

数据挖掘之你问我答(5/5)

注:本文是由Tim Graettinger的文章编译而来
问题五:最新的算法一定能得到更好的结果吗?

并非如此。

在读研究生的时候,我学到了各种预测建模的算法,并将大部分进行了编程实践。毕业后我去了一家专注于神经网络的软件公司,我想这是最厉害的建模技术了!

工作期间我咨询了许多使用我们公司软件进行应用的客户。在通常情况下,客户的内部员工已经开发过相关的应用,其建模技术并不比神经网络更为复杂。而我发现,相对之前的模型,神经网络技术顶多只能提供微弱的改进。

星期五, 十一月 11, 2011

数据挖掘之你问我答(4/5)

注:本文是由Tim Graettinger的文章编译而来
问题四:我的模型在训练数据上表现很好,为什么在新数据上表现很糟?

你遇到的就是被称为“过度拟合”(over-fit)的典型症状。通常是在为稀有事件建模时较为容易产生这种问题,例如发动机故障预测。

当某种输出结果非常罕见(如百分之一或千分之一)时,就会倾向于建立很复杂的模型。复杂的模型会有很多参数,用来预测或者说“适应”训练数据。问题是,该模型包含了训练数据所独有的特征,但在其它地方并不一定适用。这就像为你自己量身定制的衣服只适合于你自己,但并不适合其他人。在建模的世界里出现过度拟合是糟糕的。我们要构建的是稳健的、能概括新数据的模型。

你能做些什么呢?

在R中使用DataMarket的公开数据源

在如今的商业世界中,各种数据和统计数字是非常重要的决策依据,但良好的数据通常很难获得。因为数据来源分散而且格式不一,世界各地的分析人员往往花费了无数的时间进行数据检索、复制、粘贴和清理。

DataMarket.com是2010年推出的一个数据门户网站,可以一站式访问各种公共和私营部门组织的统计数据和结构化数据。这使得用户非常方便的查找、比较、可视化和下载各类机构的公开数据,如联合国,世界银行,欧盟统计局。时间序列数据还可以与新闻事件相关联,并可以用任何选定的数据格式使用到任何地方。

我们在之前的博文中曾提到过DataMarket的数据源,本文简单介绍一下如何更方便的在R语言中调用DataMarket数据。

星期四, 十一月 10, 2011

数据挖掘之你问我答(3/5)

注:本文是由Tim Graettinger的文章编译而来
问题三:进行数据挖掘需要多少数据?

这是迄今为止关于数据挖掘最常见的问题,这个问题得到如此多的关注是有其原因的。当你第一次进行数据挖掘,几乎会下意识的提出这个问题。你想知道,从数据挖掘的角度来讲手里的数据是否足够。尽管问题很简单,但在没有更深理解问题的前提下回答它却是不明智的。在这里我只能提供一些原则性的指导意见,然后你可就此来做为进一步工作的起点。我甚至会提供一个经验法则来帮助你估计所需要的数据。

第一个原则是基于关系的复杂度。你想构建的关系越复杂,你就需要越多的数据来准确的构建它。但是,你可能会说,“我不知道关系有多复杂啊”。从现实角度来看,关系的复杂度可以从影响关系的因子来加以判断。比方说,要预测天气。那么想想可能的影响因素会有哪些,例如风力、风向、温度、湿度、云层等等。你需要对可能的影响因素有大体的估计。

星期二, 十一月 08, 2011

R语言新书:R并行计算

近年来R语言已经成为流行的开源数据分析软件,但其局限性在于单处理器核心作业和内存限制。想要成为跨平台的优秀软件,则必须经过商用海量数据的考验。而并行计算是一种当前热门的解决途径。

O'Reilly最新出版了《Parallel R, Data analysis in the distributed world》,此书虽然只有122页,但包含了R语言中Snow、Multicore、Parallel、Hadoop、RHIPE、Segure几大扩展包的使用,分别讲解各自优势与缺点。在这些扩展包的帮助下,R语言可以拓展到多核心和多机运行,解决海量数据的运算问题。

星期一, 十一月 07, 2011

R语言基础入门之三:常用统计函数运算

在R语言中经常会用到函数,例如上节中讲到的求样本统计量就需要均值函数(mean)和标准差函数(sd)。对于二元数值数据还用到协方差(cov),对于二元分类数据则可以用交叉联列表函数(table)。下文讲述在初级统计学中最常用到的三类函数。

一、数据汇总函数
我们还是以R中自带的iris数据为例,输入head(iris)你可以获得数据的前6个样本及对应的5个变量。取出最后两列数据作为讲解的对象:Species表示花的种类,Petal.Width表示花瓣宽度
data=iris[,c(4,5)]
下一步我们想计算不同种类花瓣的平均宽度,可以使用tapply函数,在计算前先用attach命令将data这个数据框解包以方便直接操作其变量,而不需再用$符号。

数据挖掘之你问我答(2/5)

注:本文是由Tim Graettinger的文章翻译而来
问题二:如何使决策者购买我的数据挖掘项目?

一般我都是以自身经验有感而发的,所以,我谈论的这些东西并非基于对人或企业行为的详尽研究。这些只是我的所思所想,而且对我来说非常合适。

一、寻找一个“痛处”
“痛处”是一种业务需要或业务问题,而你有信心通过数据挖掘来解决这个问题。你所专注的这个问题的范围要小,也就是说相对来讲自成体系,有着适当的风险回报比率。这个问题还应该是你和你的的团队非常熟悉的,即对其数据来源和业务流程均很了解。这样团队就可会努力获取一个又一个小范围的成功。因为相对于失败的大项目,随着时间的推移,人们更容易接受一连串小范围成功。

请允许我仔细解释一下失败的大项目和禁忌。在我的职业生涯中,我经常被空降到一些“麻烦”的项目上。这些项目通常会有以下这些特点:

星期五, 十一月 04, 2011

数据挖掘之你问我答(1/5)

注:本文是由Tim Graettinger的文章翻译而来
问题一:你推荐什么样的数据挖掘工具?

首先,我们需要搞清楚一些东西:你的数据挖掘目标是什么?你的团队怎么样?目前正在使用的工具和能力如何?

先想想你的数据挖掘目标。你是打算以一次性的项目来解决单一业务问题?或者你要在企业内部建立数据挖掘的核心能力?你的目标将影响你选择的软件工具。此外,你的预算是否支持你的既定目标?这里面还要考虑到培训和支持成本。

下面请允许我提出两个更广泛的建议:
  • 写一个“愿望清单”。假设资金不成问题的话,你会买什么样的工具?为什么?真的,写下你的选择。这个愿望清单在后来是非常有用的。
  • 慢慢起步。在开始做数据挖掘项目时,弄清楚你到底需要什么样的工具。根据实际需要去购买软件。