大数据时代的统计学思考

作者/ Rachel Schutt

美国新闻集团旗下数据科学部门高级副总裁、哥伦比亚大学统计系兼职教授、约翰逊实验室高级研究科学家,同时也是哥伦比亚大学数据科学及工程研究所教育委员会的发起人之一。她曾在谷歌研究院工作数年,负责设计算法原型并通过建模理解用户行为。

作者/ Cathy O'Neil

约翰逊实验室高级数据科学家、哈佛大学数学博士、麻省理工学院数学系博士后、巴纳德学院教授,曾发表过大量算术代数几何方面的论文。他曾在著名的全球投资管理公司D.E. Shaw担任对冲基金金融师,后加入专门评估银行和对冲基金风险的软件公司RiskMetrics,个人博客:mathbabe.org。

 

“大数据这个词现在时常被人们随意使用,然而其语义十分模糊。简单地说,这个包罗万象的词条一般有三层含义:首先,它指代一揽子的技术;其次,它有可能引发一场度量数据规模的革命;最后,它为人们未来将会、甚或是应该如何制定决策提供了一个新视角,一种新理念。”

—史蒂夫•洛尔(Steve Lohr)《纽约时报》

在你打算成为一名数据科学家时,以下技能是必须首先具备的:统计学、线性代数和一些编程技能。同时你还需要发展以下技能:数据预处理、数据再加工、数据建模、编码、可视化和有效沟通,这些技能往往是相辅相成的。万丈高楼平地起,让我们先从统计推断开始探索数据科学的旅程。

我希望想成为数据科学家的人拥有五花八门的背景,你可能是位优秀的软件工程师,有能力搭建数据管道,但对统计学却所知甚少;或者你是一位市场分析专员,一点也不懂如何编写程序;或者你只是一位对数据科学充满好奇的读者,想弄明白数据科学到底是什么。

虽然我们在这里列举了想要成为数据科学家需要具备的一些先决条件,但我们不是查户口的,无法到你家去检查你是否修习过有关统计学的课程,或者是否曾经看过有关统计学的书籍。即使你曾经选修过诸如统计学导论之类的入门课程,但正如我们在鸡尾酒会上经常听到的那样,99%的人都十分惧怕统计学,宁愿从来没上过这门课。如此说来,你不大可能从这些课程中真正领略到了统计学的美妙,更不可能深入研究它。

即使你取得了统计学的博士学位,已经对这一领域有精深的研究,你也可以回顾一些基础概念,记起什么是统计推断、什么是统计学的思考方式,这总是有所助益的,特别在“大数据”时代这个全新的语境下,很多传统的统计学方法可能都需要重新审视和修订。

统计推断

我们所处的世界异常复杂,充满了随机性和不确定性,同时,这个世界又是一个巨大的数据生产机器。

我们搭地铁或开车去工作,我们的血液在身体里流动,我们购物、收发电子邮件、因浏览网页或查看股价而耽误正事;我们工作、吃饭、和朋友家人聊天;工厂里生产产品……这些行为都会直接或间接产生数据。

试想花一天时间去观察窗外的人流,记录下每一个经过的人;或者聚集起住在你一公里以内的人,问他们在过去的一年中每天收到多少封电子邮件;或者去你附近的社区医院翻阅血液样本,去发现蕴藏在其中的DNA模式,这些行为乍一听觉得有点变态,让人觉得不安,但事实并非如此。我们的生活本身就是不断产生数据的过程。

我们想用多种方式去描述、揭示这些过程,使人们更好地理解数据的产生。作为科学家,我们想更好地了解这个世界。对过程的了解掌握,也是解决问题的一部分。

数据就是现实世界运转留下的痕迹。而这些痕迹会被如何展示出来,则取决于我们采用什么样的数据收集和样本采集方法。假如你是数据科学家,那么作为一个观察者,你要做的事是将具象的世界转化为抽象的数据,这个过程是绝对主观的,而非人们所想的那么中立客观。

将这一过程从数据收集中剥离出来,就能清晰地看到蕴藏其中的随机性和不确定性的两个源头:一是来自过程本身,二是来自数据采集方法。

从某种程度上说,掌握了数据就掌握了世界,或者世界的运作规律,但是这并不代表着,你拿着一个巨大的Excel文件,或者存有数百万条记录的数据库,手指轻轻一划,就能理解世界及其运行规律。

你需要新的点子,将这些采集到的数据进行简化,使它们更易于理解,能够以一种更简明扼要的方式概述世界运行的规律,能够易于使用数学对其进行建模的数据,这称为统计估计量。

这一套从现实世界到数据,再由数据到现实世界的流程就是统计推断的领域。

更准确地说,统计推断这门学科主要关注如何从随机过程产生的数据中提取信息,它是流程、方法和理论的统一。

总体和样本

让我们先来统一一些术语和概念。

在经典统计学理论中,有总体样本之分。英语中总体和人口是同一个单词,因此一说这个词,人们就会马上联想到:美国人口总数3亿、全世界人口总数70亿等。但是,在统计推断中,总体并不特指人口,它指的是一组特定的对象或单位,比如推特上发布的消息,照片或者天上的星星等。

如果我们可以度量和提取这些对象的某些特征,就称为对总体的一组观察数据,习惯上,使用N表示对总体的观察次数。

假设总体为去年“巨无霸”公司员工发送的所有电子邮件,则对该总体的一组观察数据可以包括以下内容:发信人的姓名、收信人列表、发信日期、邮件内容、邮件字数、邮件中的句子数、邮件中动词的个数、从邮件发出到获得第一次回复中间的时间等。

接下来就要采集样本。所谓样本,是指在总体中选取的一个子集,用n来表示。研究者记录下样本的观察数据,根据样本特征推断总体的情况。采样的方法多种多样,有些采样方法会存在偏差,使得样本失真,而不能被视为一个缩小版的总体,去推断总体的特征。当这种情况发生时,基于样本分析所推断出来的结论常常是失真甚或完全错误的。

在上述“巨无霸”公司的例子中,可以随机抽取全部员工的1/10,以他们所发的邮件组成样本,或者随机选取一天,以该天内所发邮件的1/10作为样本。这两种抽样方式都是合理的,而且样本的数量也是相等的,但是,如果你据此计算每人发送电子邮件的数量,进而估计出“巨无霸”公司员工的发送邮件分布情况的话,应用两种采样方式,你将会得到完全不同的答案。

这样一个简单的问题,由于采样方式的不同,结果都会失真,那么对于那些复杂的算法或模型,如果你没有把获取数据的方式考虑进来,情况又会怎样?

大数据的总体和样本

在大数据时代,我们有能力记录用户的所有行为,我们难道不就可以观察一切?那么,此时做总体和样本的区分还有意义吗?如果我们已经拥有了所有的电子邮件,干嘛还要采样?

这些疑问直抵问题的核心,对此,我们有如下几个方面需要加以澄清。

采样可以解决一些工程上的挑战

在时下流行的关于大数据的讨论中,企业都主要采用Hadoop等分布式技术去解决海量数据带来的工程及计算问题,但他们却忽略了采样这种手段也同样有效。事实上,在谷歌,软件工程师、数据科学家和统计学家时刻都在用到采样来处理大数据。

使用多少数据取决于你的目标:比如,做分析或推断,你只需要部分的数据就可以了;但当你试图在用户界面上展示其中一个使用者的信息时,你可能需要搜集该使用者的所有数据。

偏差

即使我们拥有了谷歌、Facebook或Twitter的所有数据,基于这些数据所做出的统计推断并不适用于其他不使用这些服务的人群,即使针对使用这些服务的人群,上述统计结论也不能准确说明他们某一天的活动轨迹。

微软研究院的Kate Crawford女士在她的演讲“Hidden Biases of Big Data”中提到,如果仅对飓风桑迪到来前后的推特做分析,可能会得出这样的结论:人们在飓风来临前在购物,飓风过后在聚会。然而,这些推特大部分来自纽约人。首先,他们是推特的重度用户,而这时沿海的新泽西人正在担心他们的房子会不会被飓风吹倒,他们哪里还有时间和心情去发推特呢?

换句话说,如果你使用推特数据来分析桑迪飓风的影响,得出的结论可能会是:这场飓风危害不大。事实上,你得出的结论只能说明飓风对推特用户的影响。他们受桑迪飓风的影响很小,还有时间来发推特,但他们无法代表一般意义上的美国大众。

同样在这个例子中,如果你不了解相关的语境或者对桑迪飓风一无所知,你就不可能对数据做出合理的解释。

采样

让我们再来看看总体和样本在各种语境下的含义。

在统计学中,我们通常使用一种基础的数学方法来建模,描述总体和样本的关系。针对背后可能存在的规律、数学结构以及生成数据的过程,我们会做出一些简单假设。每一次研究,我们对其中一种数据生成过程中所采集到的数据进行观察,这组数据就是所谓的样本。

以“巨无霸”公司的邮件为例,如果我们随机抽取阅读一些邮件,就会产生一个样本。但如果我们再次抽取,又会产生一组完全不同的样本。

由于采样过程不同所带来的不确定性有一个学名:取样分布。就像2010年上映的、由莱昂纳多·迪卡普里奥主演的《盗梦空间》一样,这是一个梦中梦。因此,也可以将“巨无霸”公司的电子邮件想象成一个样本,而不是总体。

这些电子邮件是一个更大的超级总体的样本(此刻,我们有点哲学家附体),如果抽样时是用扔硬币来决定的话,硬币若多翻转一次,得出的样本就会完全不同。

在这里,我们使用一组电子邮件作为样本,来推断其中一个数据产生的过程,比如说:“巨无霸”公司员工的电子邮件书写习惯。

新的数据类型

过去,所谓数据是指数字和一些分类变量,但今非昔比。在大数据时代,一个优秀的数据科学家需要多才多艺,要处理的数据种类比过去要多得多,如下所示。

  • 传统数据:数字、分类变量和二进制变量。

  • 文字:电子邮件、推特、《纽约时报》上的文章。

  • 记录:用户数据、带有时间戳的事件记录和JSON格式的日志文件。

  • 地理位置信息数据。

  • 网络。

  • 传感器数据。

  • 图片。

这些新的数据类型要求我们在做采样时需更谨慎。

以Facebook用户产生的实时数据流为例,从带时间戳的日志上,可以抓取用户一周内的活动数据,在此基础上进行分析,得出的结论适用于下周或者下一年吗?

在复杂的网络中你又如何采样,使得样本可以反映总体的复杂性?

这些问题都是统计学和计算机科学领域内的开放性研究问题,我们本来就身处科技的前沿。在实际中,数据科学家尽其所能去解决这些问题,在他们的工作中,经常发明出一些创新性的方法。

术语:大数据

我们已经多次提到了“大数据”,但是一直没有好好定义它,我们也觉得不好意思,那就让我们先来看看什么是大数据。

大数据的大是相对的。人为地为大数据限定一个阈值,比如1PB,是没有意义的,这太绝对了。只有当数据的规模大到对现有技术(比如内存、外存、复杂程度、处理速度等)构成挑战时,才配称为“大”。因此,大数据的大是一个相对概念,大数据放在20世纪70年代和现在的意义是完全不同的。

当用一台机器无法处理时,就可以称为“大数据”。不同的人、不同的公司,拥有的计算资源是有差别的,对于数据科学家来说,如果数据大到一台机器处理不了,就可以称其为“大数据”,因为她不得不学习使用一些全新的工具和方法去解决这一问题。

“大数据”是一种文化现象。它描述了数据在人类生活中所占的比重,随着科技的发展,数据所占的比重越来越大。

大数据中的4V原则。这4V是指容量(Volume)、种类(Variety)、速度(Velocity)和价值(Value)。很多人借此来描述大数据的特征,你也可以从中学习借鉴。

大数据意味着大胆的假设

库克耶和迈尔-舍恩伯格的文章“The Rise of Big Data”中,他们提出大数据的革命由以下三方面构成:

  • 采集和使用大量的数据,而不是小样本;

  • 接受数据中存在杂乱噪声;

  • 重视结论,放弃探究产生结果的原因。

他们将这三方面说得冠冕堂皇,他们宣称,数据是如此巨大,没有必要去寻找原因。也不用担心采样出错,因为所有的数据都在这,它们记录了一切事实。之所以这样说,是因为他们声称找到了处理大数据的新方式,那就是让“N = 全部”。

N能代表全部吗?

答案是N永远不能代表全部。我们经常忽略那些我们最应该关心的事实。

以InfoWorld上的一篇帖子为例,互联网监控永远也不可能奏效,我们最想抓住的那些罪犯,恰恰是非常聪明、精通技术的,他们永远领先一步,永远也不会被人抓住。

那篇文章举了一个选举之夜投票的例子,这个例子中本身就存在矛盾之处:即使我们能把所有离开投票站的人都纳入统计,我们也还是遗漏了那些从一开始就不打算投票的人,他们那天晚上压根儿就没来投票站。而这些人或许才是我们需要关注的人群,和他们交谈才能了解我们国家现有投票制度存在的问题。

事实上,我们认为“N = 全部”这个假设是大数据时代人们面临的最大问题。首先,这种假设天然地将一大部分人排除在外,他们可能是因没有时间、精力、渠道去参加那些非正式或者未经宣布的选举投票。

在统计选票时,我们忽略了那些同时打两份工的人,还有那些把时间都花在等公交车上的人,他们因为各种原因没有投票。对你来说,这或许只意味着Netflix的推荐引擎推荐给你的电影不符合你的口味,因为在Netflix上愿意费心去为电影打分的大多是年轻人,他们的口味可能和你的不一样,这些打分行为使得推荐引擎更贴近他们的喜好。但是,上述例子中提出的基本观点在现实生活中很可能会埋下许多潜在隐患。

数据是不客观的

若说“N = 全部”这一假设可以成立,则意味着要承认数据是客观的。但是,相信数据是客观的,或者“让数据说话”,这些观点是错误的,当然,对于那些持完全相反观点的人也应该小心提防。

最近,我们在《纽约时报》上发表了一篇关于运用大数据方法来招聘人员的文章,正是这篇文章使我们意识到上述观点的可怕。文章中引述了一位数据科学家的说法:“让我们把所有东西都放进来,让数据自己说话。”

通读全文后,你会认识到,运用大数据运算法则是为了寻找到有潜质的“璞玉”式人才。这种做法在招聘中值得一试,但是有些事你要深思熟虑。

假设你面前有两位资历相当的求职者,一位是男性,一位是女性。阅读他们的简历你发现,相比之下,这位女性求职者跳槽次数更多,获得提拔的机会较少,而且对以前工作过的地方有更多的负面评价。

当再有这样的情况出现时,你若通过模型做决策,可能会雇用男性而不是女性求职者。你的模型是不会把有些公司歧视女性的情况考虑进去的。

换句话说,忽视因果关系是大数据法则的一种缺陷,而不是特征。忽视因果关系的模型无助于解决现存问题,而只会增加更多问题。数据也不会自己说话,它只能够以一种量化的、无力的方式去描述、再现我们身边的社会事件。

n = 1

与“N = 全部”这一极端观点相反的是另一个极端:n = 1,意思是说样本的总数为1。过去,说样本空间的大小为1是很荒谬的,没人会通过观察一个个体,就得出对总体的推断。别担心,这种观点现在仍然是荒谬的。不过,在大数据时代,n = 1有了新的含义,对于一个人,我们可以记录所有关于他的信息,我们可以对所有举动进行采样(比如他打过的电话、他敲击键盘的记录),并对这些行为进行统计推断。这是一种用户级别的建模。

建模

Rachel曾经给一位朋友打电话,讨论建模交流会的事,几分钟后她意识到,“model”这个单词对他俩来说完全是不同的含义。对方理解成了数据模型(data model),一种存储数据的结构,这属于数据库管理员的研究领域。而Rachel的意思是统计学中的模型,更可笑的是,最近Andrew Gelman的一篇关于建模的博客被时尚圈的人士发到了推特上,他们可能理解成了模特。

即使你已经使用统计模型数学模型这两个术语很多年了,但当你向周围人谈起模型时,你和他们都明确知道这个词的含义吗?什么使一个模型成其为模型?当我们问起这些基本问题时,还有一个问题也很重要,统计模型和机器学习算法之间有什么不同?

在深入这些问题之前,让我们先来看看Chris Anderson 2008年在《连线》杂志上发表的文章“The End of Theory: The Data Deluge Makes the Scientific Method Obsolete”,这篇引人争议的文章为我们的讨论增加了更多素材。值得一提的是,Chris Anderson那时候是《连线》杂志的主编。

Anderson认为数据即信息,并且宣称不需要模型,了解相关性就够了。以海量数据为例,“谷歌根本没有必要使用模型”。

是这样吗?我不相信,我觉得你们也不会相信。这种观点类似库克耶和迈尔-舍恩伯格在他们的文章中提出的“N = 全部”,我们刚刚在前面讨论过。现在,你也许已经可以感受到环绕在我们周围的深深的疑惑了吧。

然而我们需要感谢媒体,是他们让公众了解了这些问题,可是,当这些意见领袖们并不是专职从事数据科学工作的人员时,对他们的说法就得打一个问号了。仔细想想你是否同意Anderson的观点,哪些部分你认为是对的,哪些地方你认为是错的,或者你需要获取更多信息才能形成自己的观点。

鉴于公众对数据科学和模型的认知都来自主流媒体这样业余的描述,作为数据科学家,我们应该义不容辞地发出自己的声音,贡献出自己的真知灼见。

在这个大背景之下,当我们谈起模型时,其含义究竟是什么?数据科学家是如何使用它们的?

什么是模型?

人类试图用各种方式去描述他们所处的世界。建筑学家用蓝图和三维立体模型来捕捉建筑的属性;分子生物学家用连接氨基酸的三维图像描述蛋白质结构;统计学家和数据科学家则用函数表示产生数据的过程中存在的不确定性和随机性,并以此来形容数据本身的样貌和结构。

模型就好像一个特殊的镜片,我们透过这个镜片去观察和了解现实世界的本质,这个“镜片”可能是建筑学、生物学或数学模型。

模型是人工设计的,用于将无关紧要的细节排除或抽象化。在进行模型分析时,研究者必须关注这些被省略的细节。

以蛋白质为例,一种本身带有侧链的蛋白质骨架却不受规范电子运行轨迹的量子力学理论的约束,最终决定了蛋白质的构架和行为。以统计模型为例,建模时我们可能错误地排除了一些关键变量,而使用了一些与问题无关的变量,或者采用的数学结构偏离了问题本身。

统计建模

在引入数据和开始编写代码前,对于建模的流程有一个大概的了解是有益的。先干什么?谁受谁的影响?什么是因,什么是果?检验结果如何?这些都是我们应该思考的问题。

人们使用的方法各有不同,有些人喜欢用数学去描述这种关系。通用的数学公式里面必须包括参数,但是参数的值是未知的。

按照惯例,数学公式里一般使用希腊字母表示参数,拉丁字母表示数据。比如你有两列数据:xy,你认为二者之间是线性关系,用公式表达如下:y = β0 +β1x,此时你还不知道β0β1的具体数值,因此,它们就是参数。

还有些人则喜欢画图。他们先画一张数据流的图,很可能带有箭头,用来描述事物之间是怎么相互影响的,或者在一段时间内发生了些什么。在选择公式表达这种关系之前,这种关系图可以给他们一个大概的描述。

如何构建模型

你怎么知道什么数据该用什么模型?这一半是艺术,一半是科学。这个问题正是打开数据科学大门的钥匙,模型的选择是建模过程中的一环,你需要对底层结构做出大量假设,应该有一个标准来规范如何选择模型和解释这样选择的理由。但是我们还没有统一的规范,所以只能摸着石头过河,希望经过深思熟虑,能制定这样一套规范。

也许探索性数据分析(EDA)是一个好的开始。它牵扯到绘制图形和从数据集中获取直观的感觉。与试错、反复实验一样,探索性数据分析对问题的解决大有帮助。

实话实说,除非你做过很多次,否则这一过程在你眼里依然是那么神秘。最好是从易到难,先做看起来最傻的事,事后看,或许没有你想象得那么傻。

举例来说,你可以(或者说是应该)先绘制直方图或散点图以对数据产生一个直观的感受,然后试着写点什么,哪怕一开始是错误的(很可能一开始的结论是错误的,没关系)。

比如写出来的是一个线性方程,当你把它写下来,就会强迫自己去思考:这个方程有意义吗?如果没有,为什么没有?那怎样的方程对这个数据集是有意义的?你从最简单的方式开始,逐渐增加复杂度,做出假设并把你的假设写下来。如果你觉得完整的陈述有帮助,就把句子写完整,比如:“我假设将用户自然分成五组,因为销售代表谈起用户的时候,她把用户分成了五类。”然后试着用方程式和代码来表达这一陈述。

记着,从简单处着手永远是个好办法,建模时在简单和准确之间有一个权衡。简单的模型易于理解,很多时候,原始简单的模型帮你完成了90%的任务,而且构建该模型只需要几个小时,采用复杂的模型或许会花上几个月,而且只将这个数值提到了92%。

你将从构建模型开始,它们将组成你的“兵工厂”。在构建模型时会用到很多模块,其中一种就是概率分布

概率分布

概率分布是统计模型的基础。在讲述线性回归和朴素贝叶斯时,你就会知道我们这么说的原因。概率论是一门需要花费几学期去教授的课程,将这样庞杂的内容压缩讲述,对我们来说实在是个巨大的挑战。

回到还没有发明计算机的年代,科学家观察到了现实生活中的一些现象,经过测量后发现,一些固定的数学模式在重复出现。其中的经典案例莫过于人的身高服从正态分布,正态分布是一种钟形曲线,也叫高斯分布,以数学家高斯的名字命名。

还有其他一些经常出现的曲线,也分别以各自的发现者的名字命名(比如泊松分布、韦伯分布等),另外一些曲线,如伽玛分布、指数分布,则是以描述它们的数学方程式命名。

自然状态下产生的数据,可以用数学函数来描述。通过设定函数中的参数,可使函数曲线接近于实际数据的分布形态。而这些参数可在对数据进行估计的基础上得出。

不是所有过程产生的数据都服从某种已知的分布,但很多都服从。我们可以应用这些分布函数作为模块,来构建最终的模型。我们不打算深入探讨每种分布的细节,但我们提供了图1用来展示这些常用的分布,事实上有无穷多种分布,列在这里的这些只是因为有人观察了它们很久,觉得有必要给予命名而已。

概率分布可以理解为对于可能结果的子集指定一个概率,概率分布用与其对应的函数来表示。比如正态分布的函数为:

参数μ是平均值或中位数,决定了该分布的位置(正态分布是一种对称的分布)。参数σ决定了分布的幅度。这是一般意义上的方程式,在真实世界的各种特定现象中,这些参数的值是固定的,我们可以通过对数据的估计得到这些参数。

图1 一组连续的密度函数(也叫概率分布)

假设随机变量x的概率分布为p(x),该函数将x映射为一个实数,要使其成为概率密度函数,需要对其做以下限定:使用积分求曲线覆盖下的面积,则其值必须为1,这样才能称其为概率。

比如,设x为距离下趟公交车到站的时间(以秒为单位),则x是一个随机变量,因为下趟公交车的到站时间是不定的。

假设我们已知(为了便于讨论)这个等待时间的概率密度函数为图像说明文字,如果我们想知道下一趟车在等候12~13分钟后来的可能性,则只需要对于12至13之间该概率分布曲线下的区域使用积分图像说明文字求面积即可。

怎么知道该使用哪种概率分布?有两种方法:首先,可以做实验。我们可以随机到达公交车站,测量等候下一趟公交车需要的时间,重复该实验多次。然后将测量得到的数据绘制成散点图,看看与哪种概率分布曲线吻合。或者基于我们对“等待时间”是一种普遍的自然现象这一事实的了解,马上会想到采用指数分布图像说明文字去描述,指数分布就是专门发明用来描述自然界这种普遍现象的。

使用单变量函数可以描述一个随机变量的分布,描述多个随机变量则需要使用多变量函数,这称作联合分布。以两个随机变量为例,使用函数p(x, y)表示概率分布,输入为平面上的点,输出为一个非负数。为了确保其是一个概率分布函数,在整个平面求二重积分,其值为1。

还有一种分布叫条件分布p(x|y),其含义是当y给定时x的概率密度函数。

处理数据时,条件意味着一个子集。比如,假设我们有Amazon.com网站的一组用户数据,该数据列出了每个用户上月在该网站的消费金额,不论性别,也不管在将第一件商品加入购物车前浏览过多少商品。

设随机变量X表示消费金额,则可以用p(X)表示用户的消费金额分布。

从所有用户中选取一个子集,该子集的用户在购买任何商品前至少浏览过5件商品,让我们看看这些用户上月消费金额的概率分布。设随机变量Y表示在购买第一件商品前浏览的商品数量,则p(X|Y > 5)表示条件分布。条件分布和一般的分布拥有一样的性质:求积分的结果为1,而且永远不会为负数。

当我们观察这些数据点时,如(x1, y1) ,(x2, y2 ), . . ., (xn, yn),我们是在观察随机变量的实例。当我们有一个nk列的数据时,我们是在观察k个随机变量组成的联合分布的n个实例。

如果读者还想了解更多关于概率分布的知识,请参考Sheldon Ross所著的A First Course in Probability一书(Pearson)。

拟合模型

拟合模型是指用观察数据估计模型参数的过程。以数据为依据,近似模拟现实中产生数据的数学过程。拟合模型经常要引入各种优化方法和算法,例如最大似然估计等,来确定参数。

事实上,当你估计参数时,参数就成了估计量,他们本身就是数据的函数。当模型拟合成功,就能以数学函数的形式表达,比如y = 7.2 + 4.5_x_,其含义是,基于你对数据间存在线性关系的假设,该函数准确表达了两个变量之间的这种关系。

拟合模型的过程就是开始编写代码的过程:代码将会读入数据,将写在纸上的公式翻译成代码,然后使用R或者Python中内建的优化方法,根据数据,求出尽可能精确的参数值。

等你变得越来越老练,或者这本身就是你的强项时,你可能会去研究这些优化方法。首先得知道这些优化方法的存在,然后弄明白它们是怎么工作的,但是你不必亲自去编写代码实现这些方法,R和Python已经帮你实现好了,直接调用就行。

过拟合

过拟合甚至会成为你的梦魇,过拟合是指使用数据去估计模型的参数时,得到的模型并不能模拟现实情况,在样本以外的数据上效果不好。

在试图用该模型去预测另一组数据(该组数据未用来拟合模型)的标签时,你可能会发现结果不尽如人意,以准确度去衡量,这并不是一个很好的模型。

数据科学的工作流程

综上所述,让我们来看看如何定义数据科学的工作流程。你见的数据科学工作者越多,你就越会发现他们的工作流程符合图2的描述。

图2 数据科学的工作流程

首先,我们生活在这个世界中。在这个世界上,有很多人在从事各种各样的活动。有些人在使用Google+,另外一些人则在奥运会上一较高下;有些人在制造、发送垃圾邮件,有些人则在医院里抽血。假设我们拥有其中某项活动的数据。

具体来说,以原始数据为起点,诸如日志、奥运会纪录、安然公司员工的电子邮件、遗传物质记录(需要注意的是,在我们拿到这些原始数据时,这项活动中某些方面的信息已经缺失了)。我们需要处理这些原始数据,使得其便于分析。因此我们创建出管道对数据进行再加工:联合、拼凑、清理,随便你叫它们什么好了,就是要对数据进行再加工。我们可以使用Python、shell脚本、R、SQL完成这件任务。

最终得到格式化好的数据,像下面这种由列构成的数据:

姓名 | 事件 | 年份 | 性别 | 时间

在标准的统计学课程中,通常从一份干净有序的数据文件开始,但在现实中,你通常不会有这么好的运气。

在拿到这份干净的数据后,我们应该先做一些探索性数据分析。在这个过程中,我们或许会发现数据并不是那么干净,数据可能含有重复值、缺失值或者荒谬的异常值,有些数据未被记录或被错误地记录。在发现上述现象时,我们不得不回过头采集更多的数据,或者花更多的时间清理数据。

然后,我们使用一些算法,比如k近邻、线性回归、朴素贝叶斯等设计模型。选取何种模型取决于要解决的问题,这可能是一个分类问题、一个预测问题,或者只是一个基本的描述问题。

这时就可以解释、勾勒、报告或者交流得到的结果。可以将结果报告给老板或同事,或者在学术期刊上发表文章,或者走出去参加一些学术会议,阐述我们的研究成果。

如果我们的目标是开发一款数据产品或其产品原型,例如垃圾邮件分类、搜索排名算法、推荐引擎等。数据科学和统计学的不同之处就体现出来了,数据产品最终会融合到日常生活中,用户会和产品产生交互,交互会产生更多的数据,这样形成一个反馈的循环。

这和天气预报大相径庭,在预测天气时,你的模型对于结果没有任何影响。比如,你预测到下星期会下雨,除非你拥有某种超能力,否则不是你天下雨的。但是假如你搭建了一个推荐系统,证明“很多人都喜欢某本书”,那就不一样了,看到这个推荐的人没准觉得大家都喜欢的东西应该不会太差,也喜欢上这本书了,这就形成了反馈。

在做任何分析时,都要将这种反馈考虑在内,以此对模型产生的偏差进行调整。模型不仅预测未来,它还在影响未来。

一个可供用户交互的数据产品和天气预报分别处于数据分析的两个极端,无论你面对何种类型的数据和基于该数据的数据产品,不管是基于统计模型的公共政策、医疗保险还是被广泛报道的大选调查,报道本身或许会左右观众的选票,你都要将模型对你所观察和试图理解的现象的影响考虑在内。

数据科学家在数据科学工作流程中的角色

到目前为止,所有这一切仿佛不需要人工干预,奇迹般地发生了。这里说的“人”,是指那些“数据科学家”。总得有人做出决定:该收集哪些数据?为什么要收集这些数据?她还要提出问题,做出假设,制定解决问题的方案。她就是数据科学家,或者她是我们推崇的数据科学团队。

让我们重新修订以前的流程,至少增加一层,来表明数据科学家需要全程参与到这一流程中来,他们不但需要在流程的较高层次上工作,还需要亲手编写程序,如图3所示:

图3 数据科学家需要参与数据科学工作流程的各个环节

数据科学工作流程和其他科学方法的关系

数据科学工作流程,可以看作是其他科学方法的延伸或变体,它的一般步骤为:

  • 提出问题;

  • 做一些背景研究;

  • 构想假设;

  • 做实验验证构想的假设;

  • 分析数据并得出结论;

  • 把你的结果分享给其他人。

在数据科学工作流程和其他科学方法中,不是每个研究问题都需要按部就班地解决,大多数问题都不用严格走完每一步,几个步骤的组合就可能解决问题。比如,如果你的目标是对数据进行可视化(这本身也可以看成是一个数据产品),很可能你不会使用任何机器学习或统计模型,你只需要想方设法得到干净的数据,做一些探索性数据分析,将结果用图表的形式展示出来即可。

 

《数据科学实战》脱胎于哥伦比亚大学“数据科学导论”课程的教学讲义,它界定了数据科学的研究范畴,是一本注重人文精神,多角度、全方位、深入介绍数据科学的实用指南,堪称大数据时代的实战宝典。本书旨在让读者能够举一反三地解决重要问题,内容包括:数据科学及工作流程、统计模型与机器学习算法、信息提取与统计变量创建、数据可视化与社交网络、预测模型与因果分析、数据预处理与工程方法。另外,本书还将带领读者展望数据科学未来的发展。本文节选自《数据科学实战》