Python数据科学导论(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-20 12:01:03

点击下载

作者:(法)戴维·西伦(Davy Cielen)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python数据科学导论

Python数据科学导论试读:

前言

、第2、4章和附录D;王丽娜翻译了第1章和第5章;刘义翻译了第3、8章以及附录C;于晨昕翻译了第6、7章以及附录A和附录B;陈南翻译了第9章。感谢机械工业出版社华章公司的编辑在翻译过程中提出的诸多宝贵建议。由于译者的水平及经验有限,难免存在错误和纰漏,恳请广大读者指正。译者2017年3月前言

本书传递的知识永存我们心中。人类之所以为人类,人类之所以是现在的样子,数据科学技术功不可没。这本书不仅介绍计算机驱动的数据科学相关知识,还将教给读者洞察连接的能力,以及如何以事实为依据演绎出结论,如何从过去的经历中汲取经验。人类比地球上的任何其他生物更依赖于大脑。人类的生存依赖于人脑,人类在大自然中的位置完全取决于人脑的特性。古往今来,这一战略解决了人类所面临的所有问题,在不久的将来,人类也不太可能改变它。

当谈到原始计算时,人类的大脑只能引领我们走到目前的境地。现在,我们每天都接收到海量的数据,人脑分析已经无法跟上大数据时代信息所包含的潜在内容,我们已掌握的知识更难以满足人类的好奇心。因此,我们利用机器为我们做一部分工作,比如:模式识别,创建连接,以及为人类的众多问题探寻答案。

对知识永无止境的探索是人类的基因,依赖计算机为人类完成一些力所能及的工作是我们的使命。致谢

非常感谢Manning出版社所有参与本书制作的人员,在你们的帮助下本书得以顺利出版。

感谢Ravishankar Rajagopalan对本书的书稿做了全面细致的技术校对,感谢Jona-than Thoms和Michael Roberts给了许多专业的建议。另外感谢众多的评审人员,他们在本书的制作过程中提供了许多极有价值的意见反馈,他们是:Alvin Raj,Arthur Zubarev,Bill Martschenko,Craig Smith,Filip Pravica,Hamideh Iraj,Heather Campbell,Hector Cuesta,Ian Stirk,Jeff Smith,Joel Kotarski,Jonathan Sharley,J鰎n Dinkla,Marius Butuc,Matt R.Cole,Matthew Heck,Meredith Godar,Rob Agle,Scott Chaussee,Steve Rogers。

首先,我想感谢我的妻子Filipa,她给了我灵感和动力,让我得以战胜所有的困难。感谢她在我的职业生涯和创作这本书的过程中,始终陪伴在我身边。感谢她担负起家庭的重担,当我不在的时候独自照顾我们的小女儿,让我有了充裕的时间去追求我的目标并实现抱负。谨以此书向我的妻子致敬,非常感谢她为我们的小家庭所做的无私奉献。

同时,我想感谢我的女儿Eva以及我未出生的儿子,他们给了我极大的欢乐并让我笑口常开。他们活泼有趣、充满爱心,是上帝送给我的最好的礼物,也是我所期望的最完美的小孩,和他们在一起总是充满了乐趣。

特别要感谢我的父母,谢谢他们对我长期以来的支持。他们无尽的爱和鼓励让我从容完成了这本书,实现了人生的一个阶段目标,并继续我人生新的旅程。

同时,真诚地感谢同我一起共事的小伙伴们,谢谢大家齐心协力,一起攻坚了一个又一个难题。特别要感谢Mo和Arno,他们给了我最有力的支持和很好的建议。非常感激大家在本书的创作过程中付出的时间和精力,你们棒极了!没有你们,我可能都不会写这本书。

最后,真诚地感谢每一位支持我、理解我的朋友们。我常常忙得没有空闲时间,谢谢你们的关爱和一如既往的支持,让我能够专心创作并完成这本书。Davy Cielen

非常感谢我的家庭和我的朋友们,他们在我完成本书的过程中,给了我一如既往的支持和鼓励。外面的新鲜事物很多,能在家完成这本书的创作真的很不容易,谢谢大家!特别要感谢我的父母,我的兄弟Jago,还有我亲爱的女朋友Delphine。不管我有什么疯狂的想法和离奇的举动,你们一直坚守在我身边,不离不弃。

同时,谢谢我的教母,还有我的教父,他正在与癌症作斗争,但他们的积极乐观让生活充满了希望。

还要感谢我的朋友们,他们给我买啤酒。也谢谢我女朋友Delphine的父母,她的兄弟Karel和未过门的妻子Tess,谢谢你们的热情款待和美味佳肴。

大家为了美好的生活而努力奋斗着。

最后并且是最重要的一点,我想谢谢本书的合著者也是我的铁哥们Mo,以及本书的另一位合著者Davy,谢谢你们深刻的洞察和独特见解。为了成为一名企业家和数据科学家,我们每天共享跌宕起伏的人生,这是一段多么精彩的旅程,我相信我们的未来会更精彩。Arno D.B.Meysman

首先最重要的一点是我要感谢我的未婚妻Muhuba,谢谢她的爱、理解、关心和包容。最后,感谢Davy和Arno,和他们一起度过了很多开心时光并让我们的创业梦想成真。他们坚持不懈的奉献是我完成本书至关重要的资源。Mohamed Ali关于本书

我只能带领你到门口,前面的路靠你自己去前行。—Morpheus,《The Matrix》

欢迎阅读本书!你可能已经注意到本书涵盖的主题非常广泛,我们希望本书能为你介绍数据科学方方面面的知识,为你以后深入的学习打下基础。数据科学的领域非常宽广,即使用10倍于本书的厚度,也难以详尽介绍数据科学的所有知识。因此在内容的组织上,我们精心挑选出一些比较有趣的内容。本书的每一章都侧重于介绍数据科学的某一方面。真心希望学完本书后,每一位读者都能从中受益。

希望本书是一个切入口——一扇通往激动人心的数据科学世界的大门。阅读导览

本书的第1、2章系统地介绍大数据科学的背景知识及框架,有助于读者理解本书后面章节的内容。

·第1章重点介绍数据科学及大数据,以Hadoop应用实例作为结尾。

·第2章介绍数据科学过程,包括数据科学项目的一般步骤。

第3~5章介绍将机器学习应用到不断增加的大数据集上的案例。

·第3章介绍数据量不大的情况,此时数据可存储在一般计算机上。

·第4章介绍大数据带来的一系列挑战,这里的大数据是就数据的规模而言的,即海量数据(large data)。数据虽然可以存储在硬盘上,但存储在RAM上将变得日益困难。如果没有计算集群技术,一切将变得非常困难。

·第5章开始介绍大数据(big data)相关知识,使用多台计算机协同工作是不可避免的。

第6~9章介绍数据科学几个比较有趣的主题,它们或多或少相互独立。

·第6章介绍NoSQL并阐述为什么它与关系数据库不同。

·第7章介绍如何将数据科学应用到流数据中。这里所面临的主要问题不是数据规模,而是数据生成和旧数据过时的速度。

·第8章介绍文本挖掘。不是所有的数据都以数字开始。当数据以文本格式存在时,比如邮件、博客、网站等,文本挖掘和文本分析变得非常重要。

·第9章通过介绍若干实用的HTML5工具来关注数据科学过程的最后一部分——数据可视化和原型应用程序的构建。

附录A~附录D介绍前面章节出现过的Elasticsearch、Neo4j、MySQL数据库以及Python代码包Anaconda(对数据科学来说尤其有用)的安装和设置。本书读者

本书是学习数据科学知识的入门教材。对于资深的数据科学家而言,本书只触及数据科学的基础知识。对于其他读者而言,深入学习本书的实例前,应有以下预备知识:SQL、Python和HTML5的入门知识,以及统计学或机器学习的相关知识。代码下载

本书的实例采用Python语言脚本讲解。在过去的十几年中,Python语言发展成一门广受推崇并广泛使用的数据科学语言。

本书包含的大多数案例代码可以从以下在线代码库中查阅:https://www.manning.com/books/introducing-data-science。关于作者

Davy Cielen,经验丰富的企业家、作家及大学教授。他与Arno和Mo(本书另两位作者)一起在比利时及英国创建了两家数据科学公司,同时本书的三位作者在索马里兰合伙创建了第三家数据科学公司。这些数据公司关注大数据科学战略,偶尔也为其他大公司做数据咨询。Davy是法国里尔IESEG管理学院的副教授,一直从事大数据科学领域的教学和科研工作。

Arno Meysman,企业家及数据科学家。作为数据科学家,Arno兴趣爱好广泛,致力于医学分析、零售和游戏分析。他认为将数据的洞察分析与想象相结合,将在很大程度上帮助我们更好地改善这个世界。

Mohamed Ali,企业家及数据科学咨询顾问。他的兴趣集中在两个领域:数据科学及可持续发展的项目。关于封面插图

本书封面的插图取自于1805年版的Sylvain Maréchal的地域服饰习俗的四卷纲要。这本书第1版于1788年在法国巴黎出版,当时正值法国大革命的前一年。书中每一幅插图均采用手工绘制。本书封面所用插图的标题是“Homme Salamanque”,意为从萨拉曼卡来的男人,萨拉曼卡位于西班牙西部的一个省,与葡萄牙交界。该小城以天然美景、茂盛的森林、古老的橡树、崎岖蜿蜒的山脉和古老的历史而闻名遐迩。“Homme Salamanque”正是Maréchal收藏的丰富多彩的人物插图之一,这一收藏生动地展示了200年前世界不同城镇和地区的独特性和个性化。在那个时代,从人们的不同服饰和着装即可判断他们来自哪个地域,是否属于同一地域,彼此相隔有多远。该收藏栩栩如生地向我们展示了这一时期不同地域的分隔和距离感,也展现了这一历史时期与其他年代的显著区别。

从那以后着装规范逐步改变,区域服饰的多样性慢慢消失了。当今社会,人们很难再从服饰上区分出某个居民来自于哪一大陆。也许,文化多样性的消失带来的是更多样化的个人生活——肯定是更多变且快节奏的科技生活。

我们以200多年前丰富多彩的、多元地区的生活展示作为本书的封面,由Maréchal的图片回归现实生活,以此颂扬计算机业务的创造力、原创性,重新揭示多样性的价值。第1章 大数据世界中的数据科学

本章涵盖:

·数据科学和大数据的定义。

·数据的不同类型。

·洞察数据科学的过程。

·数据科学和大数据领域的介绍。

·Hadoop实例。

大数据是对使用传统数据管理技术(例如,RDBMS(Relational Database Management System,关系型数据库管理系统))无法处理的大规模、复杂数据集合的总称。关系型数据库管理系统一直被广泛使用,并被认为是唯一的解决方案,但对于处理大数据的需求,它显示出了缺陷。数据科学涉及了对大量数据的分析以及对数据包含的知识方法的提取。你可以认为,大数据和数据科学之间的关系,就如同原油厂和炼油厂之间的关系。数据科学和大数据都源自于统计和传统的数据管理,但现在又被认为是不同的学科。

大数据通常被认为具有三个v的特征:

·量(volume)——有多少数据?

·类(variety)——有多少种不同类型的数据?

·速率(velocity)——在以什么样的速度生成新的数据?

这些特征往往又被辅助于第四个v——准确性(veracity):数据的精确性有多高?这4个属性是大数据不同于传统数据管理工具的数据。因此,大数据带来的挑战几乎是每一个方面的:数据采集、维护、存储、搜索、共享、转换以及可视化。此外,大数据需要特殊的技术进行提取。

数据科学是使用统计的方法处理当前产生的海量数据的一种延伸。他把源自计算机科学的方法添加到统计方法中。在Laney和Kart的一篇研究论文“Emerging Role of the Data Scientist and the Art of Data Science”中,作者通过对上百个数据科学家、统计学家和商业智能分析师工作描述的筛选,来找出这些职务的差别。数据科学家和统计学家最主要的差别是,数据科学家有处理大数据的能力,具有机器学习、计算以及算法搭建的经验。他们使用的工具也是有差异的,在数据科学家的工作描述中,高频率地提到使用Hadoop、Pig、Spark、R、Python和Java的能力。虽然本书重点关注Python,但是不要过分担心这些工具,本书会逐步介绍这些工具的大部分。对于数据科学来说,Python是一个伟大的语言,因为它包含了许多可用的数据科学库,并被专业软件所支持。例如,广泛使用的NoSQL数据库有一套特定于Python的API。正是由于这些特性以及Python的快速原型能力,使Python的影响力在数据科学领域逐步增长。

伴随着大数据的持续增长,对大数据利用的需要也越来越重要,每一个数据科学家在他们的职业生涯中都会遇到大数据项目。1.1 数据科学和大数据的好处和用途

几乎所有的商业和非商业机构都在使用数据科学和大数据。使用大数据的实例非常多,本书中会提及一些用例,但是只涉及很少的一部分。

几乎所有行业的企业都在使用数据科学和大数据去分析他们的用户、流程、员工、实现和产品。很多企业还应用数据科学为用户提供更好的用户体验,以及交叉销售、向上销售,进而个性化他们的产品。例如Google AdSense,从互联网收集用户数据,根据收集的信息,使互联网的用户得到更加匹配的商业信息。MaxPoint(http://maxpoint.com/us)是另一个实时个性化广告的实例。人力资源专员使用人类分析方法和文本挖掘来筛选候选人,关注员工的情绪,研究同事之间的关系。在《Moneyball:The Art of Winning an Unfair Game》一书中介绍了人类分析理论。在该书(以及电影)中,我们看到美国棒球传统的队员位置安排是随机的,但是通过相关信息的分析,可以改变比赛结果。依靠统计数据,他们可以聘请合适的球员,并把他们安排到合理的位置对抗对手,让队员的能力、优势得到最大的发挥。金融机构利用数据科学预测股票市场,确定贷款的风险,并学习如何吸引新客户。在写这本书的时候,全球贸易至少50%是由机器自动执行,机器的算法是基于quants理论。从事交易算法的人通常被称为数据科学家,数据科学家帮助大数据和数据科学技术的发展。

政府部门也逐渐开始意识到数据的重要性。很多政府机构不仅依赖于内部数据科学家发现有价值的信息,也与公众共享他们的数据。用户可以使用这些数据来了解趋势或者构建数据驱动的应用程序。例如Data.gov,美国政府的公开数据都在上边。数据科学家在政府部门会接触各种各样的项目,例如检测欺诈、其他犯罪活动或优化项目资金。一个著名的例子是爱德华·斯诺登泄露了美国国家安全局和英国政府通信总部内部文件,文件清楚地显示了他们如何使用数据科学和大数据监控数以百万的人。这些组织从广泛的应用中收集了50亿数据,比如谷歌地图、愤怒的小鸟、电子邮件和短信,以及其他数据源。然后应用数据科学技术来提取信息。

非政府组织(NGO)也轻车熟路地使用数据。他们用它来筹集资金和捍卫自己的事业。例如世界野生动物基金会(WWF),雇佣数据科学家帮助他们提高筹款的有效性。许多数据科学家利用自己的业余时间帮助非政府组织,因为非政府组织往往缺乏资源来收集数据和雇佣数据科学家。DataKind是一个数据科学家组织,该组织致力于造福人类的公益事业。

大学也在应用数据科学做研究,同时也可以提高学生的学习经验。大规模网络公开课(MOOC)的崛起也产生了大量数据,这些数据帮助大学研究怎么使这种类型的学习方式补充传统课堂。MOOC是一个无价的资产,如果你想成为一个数据科学家和大数据专家,一定要看这几个知名的网络公开课网站:Coursera、Udacity和edX。大数据和数据科学更新速度快,网络公开课让你从顶尖大学课程获得最新知识。如果你不了解它们,现在正是时间去学习。当你真正了解了数据科学,你会和我一样,爱上它们。1.2 数据种类

数据科学和大数据中有许多不同类型的数据,每种数据都需要不同的工具和技术。主要分为以下数据类型:

·结构化数据

·非结构化数据

·自然语言数据

·计算机数据

·图类数据

·音频、视频和图像数据

·流数据

让我们一起来探索这些有趣的数据类型吧。1.2.1 结构化数据

结构化数据是数据依存于数据模型和记录驻留在一个固定的字段中。因此,结构化数据往往容易存储在数据库或Excel文件中(如图1-1所示)。SQL或结构化查询语言是数据库中管理和查询数据的首选方法。你也可能遇到,结构化数据让你很难将其存储在一个传统的关系数据库中。家谱的分层数据就是一个这样的例子。

然而,世界并不是由结构化的数据组成的,它是由人类和机器强加给它的。更多的时候,数据是非结构化的。图1-1 结构化数据的一个典型例子是Excel表格1.2.2 非结构化数据

非结构化数据内容是上下文特定的或多样的,使其不容易适应数据模型。典型示例是大家通常使用的电子邮件(如图1-2所示)。虽然电子邮件包含结构化元素,如发件人、标题和正文文本。但是从一些人的邮件中找到谁写了一封电子邮件投诉一个特定的员工,仍然是一个挑战,因为现在有太多的方式指向一个人。成千上万的不同语言和方言进一步增加查找的难度。

一个人手工发出的电子邮件,如图1-2所示,就是一个完美的自然语言数据的示例。图1-2 电子邮件是非结构化数据和自然语言数据的一个例子1.2.3 自然语言数据

自然语言是一种特殊类型的非结构化数据;处理起来更加富有挑战性,因为它需要具备数据科学技术和语言学知识。

自然语言处理社区在实体识别、主题识别、总结、文本完成和情感分析方面取得了成功,但是一个领域的训练模型不能很好地推广到其他领域。即使是最先进的技术也不能够解读每一块文本的意思。这是人与自然语言的斗争。由于语言的含糊不清的性质,语义本身也是值得怀疑的。两个人听到的是同样的谈话,他们会得到相同的语义吗?当某人沮丧或快乐时说出相同的单词,意义可能会有所不同。1.2.4 计算机数据

计算机数据是没有人工干预的,由计算机、过程、应用程序或其他机器自动创建的信息。计算机数据正在成为一个主要的数据资源,也是今后的发展趋势。Wikibon曾预测,互联网产业(industrial Internet)(互联网产业一词由Frost&Sullivan定义,是指复杂的物理机械及网络化传感器和软件的集成)的市场价值在2020年达到约5400亿美元。国际数据公司(International Data Corporation,IDC)预估在2020年,事物的连接会是人类连接的26倍。这个网络就是通常所说的物联网(the internet of things)。

由于计算机数据的大容量和高速度,计算机数据的分析依赖于高度可伸缩的工具。例如Web服务器日志、呼叫详细记录、网络事件日志和遥测(如图1-3所示)都是计算机数据。图1-3 计算机数据示例

图1-3中所示的计算机数据属于典型的表结构数据。但是这不是高度互联或“网络”数据的最佳实例,实体之间的网络关系发挥更加宝贵的作用。1.2.5 图类数据“图类数据”定义有些混乱,因为任何数据可以显示在图中。“图”在这种情况下意指数学图论(graph theory)。图论中,一个图是一个成对的关系对象的数学结构的模型。简而言之,图形或网络数据是关注对象邻接关系的数据。图形结构使用节点、边和属性来表示和存储图形数据。图类数据是表示社会网络的一种自然方式,它的结构允许用户进行特定的计算,比如一个人的影响和两个人之间的最短路径。

图类数据的例子在很多社交媒体网站上可以找到(如图1-4所示)。例如,在LinkedIn上你可以看到,你知道的人在哪家公司。你在Twitter上的追随者列表也是一个图类数据。复杂性主要来源于同一个节点的多个重叠的图。例如,Facebook上用连接边显示“朋友关系”的图,同一个人通过LinkedIn联系同事的图,Netflix上感兴趣的电影构成的图,将这三个看起来不同的图重叠在一起,可能产生更多有趣的问题。

图数据库用于存储基于图的数据和用特定语言(如SPARQL)查询的数据。

如果说图形数据提出了挑战,计算机解释附加数据和图像数据将更加困难。1.2.6 音频、视频和图像数据

音频、视频和图像数据类型对数据科学家形成特殊挑战。对于人类来说是微不足道的任务,如在图片中识别对象,但是对计算机来说是具有挑战的。美国职业棒球大联盟媒体(Major League Baseball Advanced Media,MLBAM)2014年宣布,为方便直播和比赛中的分析,他们将对每场比赛增加大约7 TB的视频捕捉。例如体育场的高速摄像机将捕捉球和运动员的移动,进行实时计算,得出防守队员应该采取的相对于垒线的路径。图1-4 社交网络的朋友是图类数据的一个例子

最近,一家名为DeepMind的公司成功地创造了一种算法,可以学习如何播放视频游戏。该算法以视频为输入,通过一个复杂的深度学习的过程去学会解释一切事务。这个了不起的壮举促使谷歌收购该公司,发展人工智能(Artificial Intelligence,AI)计划。该学习算法将数据作为计算机游戏产生的数据;它属于流数据。1.2.7 流数据

虽然流数据可以是前面提到的任何形式的数据,但是它有一个额外的属性。当事件发生时,数据流进入系统,而不是在批处理中被加载到数据存储区中。虽然这不是一个真正的不同类型的数据,我们在这里还是单独提出来,因为需要调整流程来处理这种类型的信息。

例如,在Twitter上的体育或音乐活动和股市当前趋势就是流数据。1.3 数据科学过程

数据科学过程通常包括6个步骤,如图1-5所示的思维导图。我们将在这里简要介绍,在第2章中更详细地阐明。图1-5 数据科学过程1.3.1 设置研究目标

数据科学主要应用于一个组织中。当业务要求你执行一个数据科学项目时,你将首先准备一个项目章程。项目章程的信息包括项目要研究的内容、公司如何从中受益、什么数据和资源是项目需要的、时间表和可交付成果。在本书中,数据科学过程将被应用到更大的案例研究,你会了解到各种可能的研究目标。1.3.2 检索数据

第二步是收集数据。在项目章程中已经陈述了项目需要的数据以及在哪里可以找到。在这一步中,请确保数据可以在程序中使用,这意味着要检查数据是存在的、可访问的,以及检查数据的质量。数据也可以由第三方公司提供,并采取多种形式,从Excel电子表格到不同类型的数据库。1.3.3 数据准备

数据收集是一个容易出错的过程;在这个阶段中,提高数据的质量,为随后的步骤作准备。这一阶段包括三个子阶段:数据清洗(data cleansing),从数据源中移除假数据和不一致的数据;数据集成(data integration),通过合并多数据源中的信息丰富数据源;数据转换(data transformation),确保数据的格式是模型中可用的。1.3.4 数据探索

数据探索是更深入地了解已有数据。我们要试图了解变量是如何相互作用的、数据的分布以及是否有异常值。为了实现这一流程我们要使用描述性统计、可视化技术和简单的建模。这一步通常被简称为EDA(Exploratory Data Analysis,探索性数据分析)。1.3.5 数据建模

在这个阶段中,我们会使用模型、域知识和分析前面步骤得到的数据,获取课题研究的答案。首先从统计、机器学习、运筹学等领域中选择一种技术。然后建立一个包括选择模型变量、执行模型和模型诊断的迭代过程的模型。1.3.6 展示与自动化

最后,把结果交付公司。这些结果可以采取多种形式,从展示到研究报告。有时,流程需要自动化执行,因为另一个项目将要使用这个项目获得的见解或另一个操作过程需要使用这个模型的结果。

迭代过程 以前数据科学过程的描述给你的印象是,在一个线性的方式中完成这个过程。但在现实中,往往必须退一步和重新研究某个结果。例如,可能会在数据挖掘阶段发现异常点,由此发现数据导入错误。作为数据科学过程的一部分,当获得了新的见解,可能会发现新的问题。为防止返工,请务必在开始彻底明确业务范围。

现在对过程有了更好的理解,让我们来看看技术。1.4 大数据生态系统与数据科学

目前,大数据方面的工具和框架已经有很多,因为技术更新迅速,工具和框架很容易被淘汰。本章将会介绍大数据生态系统的技术,可根据类似目标和功能进行分类,这将有助于了解大数据生态系统。数据科学家使用了许多不同的技术,但是不会全部使用;我们会用单独的一章对最重要的数据科学技术进行介绍。图1-6的思维导图显示了大数据的生态系统的组件和不同的技术属于的领域。

让我们看看这组图中不同种类的工具和每种工具做些什么。我们先从分布式文件系统开始。1.4.1 分布式文件系统

分布式文件系统(distributed file system)除了它在多个服务器上同时运行外,和正常的文件系统类似。因为它是文件系统,所以正常的文件系统可以执行的操作,在分布式文件系统上几乎都可以执行。如存储、读取和删除文件以及添加文件安全属性是每一个文件系统的核心操作,分布式文件系统也包括这些操作。分布式文件系统具有以下明显优势:图1-6 大数据技术的主要组件

·存储文件比计算机的磁盘大。

·针对冗余和并行操作,文件被自动复制到多个服务器,用户从背后的复杂性中解脱出来。

·系统易于扩展:不再受单一服务器的内存或存储限制的约束。

过去,通过将文件移动到一个内存、硬盘空间更大和CPU更好的服务器来进行扩展(垂直扩展)。现在你可以添加一个小服务器(横向扩展)。横向扩展可以使扩展潜力无限。

现在最著名的分布式文件系统是Hadoop文件系统(HDFS)。它是Google文件系统的开源产品。因为它是现在最通用的,在本书中,我们将重点介绍Hadoop文件系统。当然,现在也存在许多其他的分布式文件系统,三种常见的为红帽集群文件系统(Red Hat Cluster File System)、Ceph文件系统(Ceph File System)和Tachyon文件系统(Tachyon File System)。1.4.2 分布式编程框架

在分布式文件系统上存储数据,就会想利用它。分布式硬盘上工作的一个重要方面是,数据不需要移动到程序,而是程序移动到数据。当使用普通通用程序设计语言,如C、Python或者java编写程序时,你需要解决复杂的分布式程序设计的问题,如重新启动任务失败,从不同的子进程跟踪结果等。幸运的是,开源社区已经开发了许多框架来处理这些问题,这些框架为用户使用分布式数据提供好的用户体验,同时解决其带来的许多挑战。1.4.3 数据集成框架

有了一个分布式文件系统,就需要添加数据。需要将数据从一个源移动到另一个,而这正是数据集成框架,比如Apache Sqoop和Apache Flume excel。此过程类似于传统的数据仓库的提取、转换和加载过程。1.4.4 机器学习框架

当数据准备妥当,就是提取分析结果的时候了。这时就要依靠机器学习、统计、应用数学领域的知识。在第二次世界大战之前,一切都需要手工来计算,这严重限制了数据分析的可能性。第二次世界大战之后,开发了计算机和科学计算。一台计算机可以做所有的计数、计算,一个新的世界机遇开始了。自从有了这一突破,人们只需要推导出数学公式,把它们写在算法中并加载需要的数据。由于当今数据的海量性,一台计算机无法完成所有的工作。事实上,使用20世纪开发的几个算法,即使利用地球上的每一台计算机分析海量数据,在宇宙结束的时候也不会终止。这是时间复杂度的问题(https://en.wikipedia.org/wiki/Time_complexity)。例如破译一个密码,需要测试每一种可能的组合。在http://stackoverflow.com/questions/7055652/real-world-example-of-exponential-time-complexity上可以找到这种例子。与旧算法的一个最大不同是,旧算法不能扩展。今天我们需要分析的数据量是不确定的,需要专门的框架和库来处理这个数据的量。Python最常用的机器学习库是Scikit-learn。这是一个伟大的机器学习工具箱,我们在本书后面会使用它。当然还有其他Python库:

·神经网络库的PyBrain——神经网络是一种学习算法,模仿人类大脑的学习机制和复杂性。神经网络通常被认为是高级黑盒。

·NLTK或自然语言工具箱——顾名思义,它的工作重点是自然语言。这是一个广泛的图书馆,它捆绑了一些文本资料帮助建立数据模型。

·Pylearn2——另一个机器学习工具箱,但没有Scikit-learn那么成熟。

·TensorFlow——谷歌提供的深度学习Python库。

当然,机器学习的发展前景不会终止于Python库。Spark是Apache开发的新的机器学习引擎,特别是处理real-learn-time机器学习。想了解更多Apache Spark可以关注这个网站:http://spark.apache.org。1.4.5 NoSQL数据库

如果需要存储大量的数据,需要专门管理和查询此数据的软件。传统上,这一直是关系型数据库的天下,如Oracle SQL、MySQL、Sybase IQ和其他关系型数据库。虽然当下很多时候还在使用这些技术,但是新类型的数据库通常分类在NoSQL数据库组中。

这个命名有一定的误导性,“No”(不)在这一背景下代表“Not Only”(不仅)。范式转变的最大原因不是缺乏SQL功能,许多NoSQL数据库执行它自己的一套SQL版本。传统的数据库的最大缺点是不允许扩展。NoSQL数据库解决了传统数据库的一些问题,允许几乎无限的数据增长。传统数据库相对于大数据还有其他一些缺陷:存储或处理能力不能超出一个单一的节点,没有办法来处理流、图或非结构化形式的数据。

许多不同类型的数据库相继出现,但可归纳为以下类型:

·列数据库——数据存储在列中,允许算法更快地执行查询。新技术使用cell-wise存储。仍然是表结构。

·文档存储——文档存储不再使用表,但每条记录存储在文件中。这种数据库有更灵活的数据格局。

·流数据——不是分批地收集、转换和汇总数据,而是实时的。为了帮助工具选择,我们将它归类为一个数据库,但它更是一个特定类型的问题,这种问题推动新技术的发展,如Storm。

·键-值存储——数据不是存储在表中,而是为每个值设定一个键,如org.marketing.sales.2015:20000。这可以很好地进行扩展,但几乎所有实现都依赖于开发人员。

·Hadoop上的SQL——Hadoop上的批处理查询是一种类SQL语言,它在后台使用map-reduce框架。

·新SQL——它结合了NoSQL数据库的可伸缩性和关系数据库的优点。有一个SQL接口和一个关系数据模型。

·图数据库——并不是每一种数据都适合存储在表中。一些特殊的数据最好是转化为图论,并存储在图数据库中。一个典型的例子就是社交网络。1.4.6 调度工具

调度工具可以自动执行重复的任务,并根据事件触发工作,如将一个新文件添加到文件夹中。这些类似于为大数据开发的工具,如Linux上的工具CRON。例如,每当一个新数据集在目录中可用的时候,可以使用CRON工具启动一个MapReduce任务。1.4.7 基准测试工具

这一类工具的开发是通过提供标准化的分析套件优化大数据安装。分析套件是从一组有代表性的大数据中获取。确定基准和大数据基础设施的优化及配置不属于数据科学家而属于IT基础设施设置专家的通常工作,因此本书中将不会涉及。使用优化的基础设施会产生很大的成本差异。例如,如果可以优化100个集群服务器上10%的空间,就相当于节省了10台服务器的费用。1.4.8 系统部署

建立一个大的数据基础设施不是一件容易的事,系统部署工具的闪光点是协助工程师部署新的应用到大数据集群系统。大数据组件的安装和配置大多数是自动完成的。这不是数据科学家的核心任务。1.4.9 服务开发

假设你在Hadoop上做出世界级足球预测的应用,你想让别人使用你的应用程序做预测。然而,你不确定是否每个人都热衷于使用你的预测。服务工具excel可以推送大数据应用到其他程序。数据科学家有时需要通过服务公开他们的模型。最著名的例子是REST服务,REST意指表述性状态转移。服务开发主要服务于网络数据。1.4.10 安全

希望所有人都能接触到你的所有数据吗?你可能想在细节上控制数据访问,但又不想在每个应用上进行管理。大数据的安全工具可以实现整体和细节上的数据访问管理。大数据安全已经成为一个主题,数据科学家通常是数据的使用者,很少会考虑安全问题。在这本书中,我们不描述如何建立大数据的安全性,因为这是一个安全专家的研究领域。1.5 Hadoop工作示例介绍

我们会用大数据的一个小应用程序结束这一章。因此,将使用Hortonworks Sandbox图像。这是一个在Hortonworks平台创建的虚拟机,在这台虚拟机上使用本地机器上的一些大数据应用程序。本书稍后将介绍如何在多台计算机上使用Juju简化Hadoop的安装。

我们会使用工资薪水的轻量数据集运行第一个示例,以亿计行的大数据集查询也会同样容易。查询语言类似SQL,但后台MapReduce作业将运行并产生一个简单表格结果,然后转化成一个柱状图。这个练习的结果如图1-7所示。

为了尽快运行使用,我们使用VirtualBox的Hortonworks Sandbox。VirtualBox是一个虚拟机软件,用户可以在自己的操作系统上运行另一个操作系统。这样用户可以在已经安装Hadoop的系统上,再运行CentOS。

以下几个步骤在VirtualBox上安装Sandbox。注意,因为本章写于2015年2月,以下步骤适用于此月份之前的版本:

1)从网站http://hortonworks.com/products/hortonworkssandbox/#install下载虚拟镜像。

2)启动虚拟机。VirtualBox可以从这个网站下载:https://www.virtualbox.org/wiki/Down-loads。

3)按CTRL+I,并且从Hortonworks中选择虚拟镜像。

4)单击Next。

5)单击Import,镜像很快就会被导入。

6)选择要运行的虚拟机,然后单击Run。

7)随着Hadoop的安装运行,CentOS分布平台片刻之后会启动起来,如图1-8所示。注意,这里Sandbox的版本是2.1。其他版本的运行步骤可能略有不同。图1-7 运行结果:根据职位排出的平均薪资图1-8 Hortonworks Sandbox运行在VirtualBox上

可以直接登录到计算机或使用SSH登录。这个应用程序将使用Web界面。浏览器输入地址http://127.0.0.1:8000,将会得到如图1-9所示的欢迎界面。

Hortonworks上传了两个样本集,在HCatalog中可以看到。单击屏幕上HCat按钮,会看到如图1-10所示的表格。

单击sample_07后面的Browse Data按钮进入下一个屏幕(如图1-11所示),查看数据内容。

这看起来像一个普通的表,Hive是一个工具,可以让用户像运行一个普通数据库的SQL。这种特殊的SQL叫HiveQL,就像SQL的一种方言,同样可以得到查询结果。在菜单中单击Beeswax按钮,打开Beeswax HiveQL编辑器(如图1-12所示)。图1-9 Hortonworks Sandbox欢迎界面(http://127.0.0.1:8000)图1-10 HCatalog可用表格列表

请执行以下查询,获得结果:图1-11 表内容图1-12 在Beeswax HiveQL编辑器中执行HiveQL命令。后台HiveQL转换为MapReduce的任务

单击Execute按钮。Hive将HiveQL转换为MapReduce任务,在Hadoop环境中运行,如图1-13所示。

这时最好不要阅读日志窗口。因为它的信息会对用户造成误导。如果你是第一次查询,那么可能需要30秒。Hadoop运行慢是出名的。当然,这个会在后面讨论。图1-13 日志显示HiveQL转换成MapReduce任务。注意:这个日志是HDP 2015年2月版,和当前版本可能会略有不同

一段时间后,系统给出运行结果。伟大的工作!如图1-14所示,结论是投资医学院是一个很好的项目。惊讶吗?图1-14 最终结果:教授平均工资

用这个表结束我们对Hadoop教程的介绍。

尽管本章只是开始,但可能已经感觉到新技术铺天盖地地涌来。建议读者朋友把所有的概念都理解后再返回这里。数据科学是一个广泛的领域,所以它涵盖一个广泛的词汇。我们希望在本书中涵盖大部分词汇的介绍。之后,根据兴趣,选择想进一步了解的技能方向。这就是“数据科学介绍”的全部内容,希望你会喜欢跟我们一起走下去。1.6 本章小结

通过本章的介绍,将了解到以下内容:

·大数据是数据集的总称,传统数据管理技术很难处理大型或复杂的数据。大数据有四大特点:高速、多样化、体积大和准确。

·数据科学是使用方法来分析由小数据集组成的庞大的大数据。

·尽管数据科学流程不是线性的,也可分为以下步骤:

①设置研究目标

②检索数据

③数据准备

④数据探索

⑤数据建模

⑥展示与自动化

·大数据技术不仅仅是Hadoop。它由许多不同的技术组成,可以分为以下几类:

·文件系统

·分布式编程框架

·数据集成

·数据库

·机器学习

·安全

·工作流

·基准测试

·系统部署

·服务开发

·并不是每一个大数据类别都需要数据科学家利用大量的数据。他们主要关注文件系统、分布式编程框架、数据库和机器学习。他们确实接触到其他部分,但这些都是其他职业的领域。

·数据可以有不同的形式。主要形式是

·结构化数据

·非结构化数据

·自然语言数据

·计算机数据

·图类数据

·流数据第2章 数据科学过程

本章涵盖:

·了解数据科学过程的相关流程。

·探讨数据科学过程的相关步骤。

本章的目标是概述数据科学过程,而不深入研究大数据。我们将在后续章节中了解如何处理大数据集、流数据和文本数据。2.1 数据科学过程概述

遵循数据科学的结构化方法可以最低的成本最大限度地提高数据科学项目成功的机会。这也使得有可能把一个项目作为一个团队,每个团队成员都专注于自己最擅长的工作。但请注意:这种方法可能并不适合每一种类型的项目,也不是做好数据科学的唯一途径。

典型的数据科学过程包括6个步骤,我们将通过这些步骤进行迭代,如图2-1所示。

图2-1总结了数据科学过程,并显示了在一个项目中所采取的主要步骤和操作。以下列表是一个简短的介绍,本章将对每个步骤进行更深入的讨论。

1)数据科学过程的第一步是制定研究目标。这里的主要目的是确保所有利益相关者了解项目的内容、方式和原因。在每个重要的项目中,这一步将生成一个项目章程。

2)第二阶段是数据检索。首先要有可用于分析的数据,因此此步骤包括找到合适的数据并获取数据的访问权限。结果是原始形态的数据,可能需要抛光和变换才能使用。

3)获得原始数据后,进入数据准备阶段。这包括将原始表单中的数据转换为可直接在模型中使用的数据。为了实现这一点,需要检测和纠正数据中不同类型的错误,将来自不同数据源的数据进行组合和转换。成功完成此步骤后,则可以进行数据可视化和建模。

4)第四步是数据探索。这一步的目标是深入了解数据。我们将基于可视化和描述技术来查找数据的模式、相关性和偏差。此阶段洞悉的知识将有助于数据建模。

5)终于,进入最精彩的部分——模型构建(在本书中通常被称为“数据建模”)。现在,可以尝试获得洞察力或者对项目章程作出预测。现在是拿出重头戏的时候了,请记住研究成果告诉我们,经常(但不总是)是简单模型的组合赛过一个复杂的模型。如果正确完成这个阶段,就几乎成功了。

6)如果需要,数据科学模型的最后一步是结果展现并自动进行分析。项目的其中一个目标是改变过程或做出更好的决策。我们可能仍然需要说服业务人员,我们的研究成果确实如预期会改变业务流程。这是体现影响力的时刻。在项目的战略和战术层面,这一步骤的重要作用更为明显。某些项目要求一遍又一遍地执行业务流程,因此项目的自动化将节省很多时间。图2-1 数据科学过程的6个步骤

实际上,我们不会从步骤1到步骤6以线性的方式开展工作。通常,我们会在不同阶段之间回归并迭代。

遵循这6个步骤,项目成功率会更高,研究成果的影响会更广。整个过程能够确保我们有一个明确的研究计划,很好地理解业务相关问题,并在开始研究数据之前清楚可交付的成果。此研究过程的第一步强调获取高质量的数据作为模型的输入,这样模型在以后才会表现得更好。在数据科学中,有一个众所周知的说法:垃圾输入导致垃圾输出。

遵循结构化方法的另一个好处是,在搜索最佳模型时,我们更多地在原型模式(prototype mode)下工作。在构建一个原型时,可能会尝试多种类型,不会过于专注程序开发速度或编写符合标准化的代码。这可以让我们专注于能带来商业价值的工作。

并不是每个项目都是源自商业的。分析中的深度挖掘或得到的新数据都可能会产生新的项目。当数据科学团队产生一个新想法时,他们已经做了部分工作以便提出建议并找到相关商业赞助商。

将一个项目划分成较小的阶段,仍然允许员工以团队的方式合作。每个员工不可能成为一切领域的专家。你需要知道如何将所有数据加载到不同的数据库里,找到一个不仅适用于你的应用程序而且还适用于公司内部其他项目的最佳数据方案,掌握所有的统计和数据挖掘技术,同时也是各种演示工具和商业政治的专家。这是一项非常艰巨的任务,这就是为什么越来越多的公司依靠一个专家团队,而不是试图找到一个可以完成一切工作的专家。

本节描述的过程适用于那些只包含少量模型的数据科学项目,它不适用于所有类型的项目。例如,一个包含数百万个实时模型的项目就不太适合这里描述的流程,而需要采用不同的方法。尽管如此,一位新手数据科学家依然应该遵循这种过程,并工作很长一段时间。不要成为过程的奴隶

数据科学过程容易受到数据科学家、公司以及项目的性质等偏好的影响,因此并不是每个项目都遵循上述蓝图。有些公司可能要求遵循严格的协议,而另一些公司则可能采用更为非正式的工作方式。一般来说,当处理的项目非常复杂或涉及许多人或其他资源时,需要采用一种结构化的方法。

敏捷项目模型是顺序迭代过程的替代方案。由于这种方法在IT部门甚至整个公司得到了很好的应用,因此它也正被数据科学界广泛采纳。虽然敏捷方法适用于数据科学项目,但许多公司在数据科学领域更倾向于采取更加严格的方法。

预先规划数据科学过程的每一个细节是不可能的,我们常常会在流程的不同步骤之间进行迭代。例如,了解情况后,开始正常的工作流程,直到进入探索性数据分析阶段。图表中显示了两组性别之间行为上的差异——或许是男性和女性的性别差异?此差异无法确定原因,因为尚未有变量明确指出客户是男性还是女性,所以还需要检索一个额外的数据集以便进行进一步的确认。为此,需要遵循审批流程,这表明你(或业务)需要提供一种项目章程。在大公司中,预先获得完成项目所需的所有数据是一个严峻的考验。2.2 步骤1:定义研究目标并创立项目章程

一个项目始于这个项目是什么、为什么要做和如何去做(见图2-2)。公司期望你做什么?为什么管理层认为你的研究有价值?它是一个宏大战略图上的一个组成部分还是一个“孤狼”项目(源自他人的探索发现)?回答这三个问题(什么,为什么,如何)是第一阶段的目标,因此每个人都应当知道该做什么,并就最佳行动方案达成一致。图2-2 步骤1:设置研究目标

输出的结果应该是一个明确的研究目标,对背景的充分理解,明确可交付的成果以及配有时间表的行动计划。此类信息最好是放在项目章程中。当然,对于不同的项目或公司来说,项目章程的长短和形式可能有所不同。在项目的初期阶段,人际关系和商业智慧往往比技术实力更重要,这就是为什么此阶段经常由高级人员指导。2.2.1 了解研究的目标和背景

此阶段一个重要的输出结果是研究目标,即以明确的、集中的方式说明任务的目的。了解业务目标和背景对于整个项目的成功至关重要。我们需要不断地提出问题并设计样例,直到掌握确切的业务预期,确认项目如何适应整个大局,了解研究将如何改变业务,并充分理解业务将如何使用我们的研究结果。我们花几个月的时间研究并最终解决了一个问题,然而,当我们将研究成果汇报给组织时,每个人都立即意识到我们误解了他们的问题,没有什么比这个更令人沮丧。不要忽略这个阶段,许多数据科学家败在了这里:尽管他们在数学方面富有智慧,科研方面才华横溢,但他们似乎没有把握住业务目标和背景。2.2.2 创立项目章程

客户希望了解他们为什么而付款,所以当我们对业务问题有了很好的了解之后,需要尽可能地就可交付成果达成正式的协议。最好将所有这些信息都收集到项目章程中。对于任何重大的项目来说,这都是必须完成的任务。

创建项目章程离不开团队的合作,至少应该包括以下内容:

·明确的研究目标

·项目任务和背景

·如何进行分析

·期望使用什么资源

·证明这是一个可实现的项目或概念性验证

·可交付成果和确保成功的措施

·时间表

客户可以根据这些信息来估计项目成本,以及确保项目成功所需的数据和人员。2.3 步骤2:检索数据

数据科学过程的第二步是检索所需的数据(见图表2-3)。有时需要自行开展研究工作并设计数据收集过程,但在大多数情况下,我们不需要参与此步骤。因为许多公司早已经收集并存储好数据,即使没有,也会从第三方合作伙伴那里购买。不用担心如何在机构外查看数据,因为越来越多的组织正在为公共和商业用途免费提供高质量的数据。图2-3 步骤2:检索数据

数据可以以许多形式存储,从简单的文本文件到数据库中的表格。当前的目标是获取研究所需的所有数据。这可能有些困难,即使我们获取了所有数据,但数据通常就像尚未加工的原始钻石,表面粗糙,需要抛光才能发挥其作用。2.3.1 从存储在公司内部的数据开始

公司内的数据随时可以访问,第一步行动应该是评估这些数据的相关性和数据质量。大多数公司都有一个程序来维护关键数据,所以很多数据清理工作可能已经提前完成了。这些数据可存储在官方的数据存储库中,比如数据库、数据集市、数据仓库和数据湖,并且交由专业的IT团队来维护。数据库的首要目标是数据存储,而数据仓库则是用来读取和分析数据。数据集市是数据仓库的一个子集,旨在为特定的业务部门提供服务。数据仓库和数据集市是预处理数据的地方,而数据湖包含了自然或原始格式的数据。尽管如此,数据可能仍以Excel文件的格式存放在领域专家的桌面上。

即使是在公司内部,查找数据有时也是一项挑战。随着公司的发展壮大,数据可能会分散在许多地方存储。数据的相关知识可能随着员工的职位变迁和离职变动而改变。文档和元数据并不总是交付经理的首要任务,就像福尔摩斯所拥有的高超技能,我们可能也需要提高查找所有丢失数据的技能。

访问数据是另一个难题。各机构都很了解数据的价值和敏感度,因此对数据的访问有着严格的权限控制,个人可以访问自己需要的数据,而没有权限访问更多的内容。这些政策转化为物理的和数字化的屏障,被称作“中国墙”。这些“墙”是大多数国家对客户数据的强制性和规范性。想象一下:如果没有数据访问的权限控制,一个信用卡公司的每个员工都将有权限获取你的消费信息,这是否是一个很好的理由?申请访问数据的权限往往需要花一些时间并涉及公司的相关政策。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载