?大数据、物联网、人工智能已经变成近几年最热门的科技流行语。尽管大家用很多名词去定义这些技术,但是共通的思想是它们都是数据驱动的。人们并不满足于简单地拥有数据,因为发现其中的价值才是最本质的。因此数据科学家已经开始关注如何从原始数据中洞悉深层价值。
数据科学已经变成学术界和产业界最流行的话题。但是数据科学是一门非常宽泛的学科,学会掌握数据科学注定很有挑战性。初学者必须学习如何准备、处理、聚合和可视化数据。而更多高级技能包括机器学习,挖掘各种数据格式(文本、图像和视频),以及最重要的—使用数据产生商业价值。数据科学家的角色需要大量的努力,同时,一名成功的数据科学家也需要一个有力的工具来解决日常问题。
在这个领域中,数据科学家使用最广泛的工具是开源而且免费的R语言。作为一种机器语言,R提供了许多数据处理函数、学习库和可视化函数,允许用户快速上手分析数据。R可以帮助用户快速执行分析,并在不需要懂得复杂数学模型细节的前提下执行机器学习算法。
本书给出了实际方案,教你如何使用R语言将数据科学落地。全书共12章,每一章都分成几个简单的教程。通过每一个教程循序渐进的介绍,你可以使用R的程序包,掌握书中所教授的技术。
本书首先介绍如何创建R函数来避免不必要的代码重复。你会学到如何使用R程序包,在各种数据源上准备数据、处理数据和执行高级ETL操作。数据操作的一个例子是介绍如何使用dplyr和data.table程序包有效地处理大型数据结构。还有一章关注ggplot2,介绍如何创建高级图形,进行数据展示。你也会学到如何使用ggvis程序包构建交互式报告。
本书也会介绍如何使用数据挖掘技术发现经常一起购买的产品。后面的章节还给出了财务数据的时间序列分析结果。还有一些章节会深入介绍机器学习技术,包括数据分类、回归、聚类和降维。我可以保证,本书会让你觉得,数据科学学习原来如此简单。
主要内容第1章介绍如何创建R函数。该章会介绍R函数的基本构成、环境和参数匹配。我们还会介绍高级技术,例如闭包、函数式编程和如何处理错误。
第2章介绍如何使用R读取结构化和非结构化的数据。该章首先介绍从文本文件中读取数据。然后,介绍如何把R和数据库连接起来。最后,你会学到如何编写网络爬虫,爬取网页和社交网络上的非结构化数据。
第3章介绍分析前的数据准备工作。在该章中,我们会介绍数据预处理过程,使用基本的R函数,进行例如类型转换、添加、过滤、舍弃、重塑和缺失值估计。
第4章介绍如何使用高级程序包data.table和dplyr有效而且高效地操作数据。data.table提供了快速加载和聚合大型数据的可能。dplyr程序包提供了以类似SQL的语法操作数据的能力。
第5章介绍使用ggplot2可视化数据。首先介绍ggplot2的基本构成。然后,介绍高级技术,使用ggplot2函数创建复杂的图形。最后,介绍如何使用ggmap构建地图。
第6章展示如何使用R创建一份专业的报告。首先,讨论如何使用Rmarkdown语法,嵌入R代码块。然后,介绍如何使用ggvis添加交互式图表。最后,介绍如何创建和发布RShiny报告。
第7章关注如何从不同的概率分布上抽样数据。作为一个具体的例子,我们会介绍如何使用概率函数模拟随机交易过程。
第8章首先讨论点估计和置信区间。然后,介绍参数和非参数检验方法。最后,介绍如何使用ANOVA分析工程师的收入是否会随着头衔和地区的变化而不同。
第9章介绍用于发现交易数据中关联项和暗藏的频率模式的常用方法。在该章中,我们会使用一个实际例子,以便你可以学到如何在实际的数据集中执行规则和模式挖掘。
第10章首先介绍如何从财务数据集中创建和操作时间序列。然后介绍如何使用HoltWinters和ARIMA预测时间序列。该章会通过一个实际例子介绍如何使用ARIMA预测股票价格。
第11章介绍如何构建基于标注训练数据的预测模型。你会学到如何使用回归模型理解数值关系,并使用拟合模型进行连续值预测。对于分类任务,你会学到如何拟合数据,生成一个树形分类器。
第12章介绍未标注数据的隐含结构。首先,介绍如何使用聚类方法对位置临近的旅馆进行分组。然后,介绍如何使用PCA方法选取和抽取经济自由度数据集中的特征。
机器环境要学习本书中的例子,你需要一台可以访问互联网的计算机,而且可以安装R环境。你可以通过http://www.cran.rproject.org/下载R安装文件。具体安装信息可以在第1章中找到。
本书中的例子是在MicrosoftWindows和R3.2.4的基础上编写和测试的。这些例子也可以在MacOSX或者类似于UNIX的操作系统下,使用最新的R版本编译通过。
读者人群本书是面向已经熟悉R语言的基础操作,但是希望学习如何使用R程序包有效而且高效地分析现实世界数据问题的读者。
行文结构在本书中,你会发现一些标题经常出现(如准备工作、实现步骤、运行原理、更多技能和扩展阅读)。
为了清楚地介绍如何完成每一个教程的学习,我们使用以下行文结构:
准备工作这个部分会告诉你当前教程需要的东西,并介绍如何安装软件和本教程所需的基础环境。
实现步骤这个部分包括本教程所需的步骤。
运行原理这个部分通常包含对前一个部分的具体解释。
更多技能这个部分包含本教程的额外信息,以便扩展读者关于当前教程的知识面。
扩展阅读这个部分提供了指向其他有用信息的链接。
本书约定在本书中,你会发现文本有多种风格,以提供不同的信息。这里给出一些风格的例子,并给出其中的含义。
程序包和函数名风格如下:“你可以安装加载程序包RCurl”。
代码块设置如下:
>install.packages("RCurl")>library(RCurl)屏幕中的词语,例如菜单或者对话框,文本做如下展示:”在R中,缺失值使用NA(不适用)标记,不可能的值用NaN(不是一个值)标记”。
样例源码下载你可以从http://www.packtpub.com通过个人账号下载你所购买书籍的样例源码。如果你是从其他途径购买的,可以访问http://www.packtpub.com/support,完成账号注册,就可以直接通过邮件方式获得相关文件。
你也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号,下载本书的源代码。
下载书中彩图我们还为读者准备了一个PDF文件,该文件包含了本书所有截图和样图,可以更好地帮助读者理解输出的变化。你可以从以下地址下载:http://www.packtpub.com/sites/default/files/downloads/RforDataScienceCookbook_ColorImages.pdf。
推荐序对于互联网来说,当今是一个数据为王的时代。特别是对于中国互联网从业者来说,这个时代来得很快、很迅猛。Web2.0的到来让用户数据呈现出爆炸式的增长态势。如今,在搜索引擎、推荐系统、广告投放、语音识别、图像识别、自然语言理解、对话系统、交通物流、互联网金融等领域都可以看到数据科学发挥功效的身影。而AlphaGo的胜利又掀起了人类对机器智能的大讨论。数据科学让人类在这个时代重新看到了0和1所蕴藏的巨大价值,找到了新的技术和战略高地。
然而机遇总是与挑战共存。海量数据通常意味着人们要花费巨大的精力才能把数据转变为价值,无论是数据记录、数据处理、数据算法,还是数据可视化,每一个环节都会影响最后的产出,而每一个环节都不能轻而易举地完成。市面上关于数据科学的书籍林林总总,最多的要数Python派和R派。Python派起源于工程人员,不管是理论还是实践,读者可选的种类还是很多的。而R语言是由统计学者开发的,其出身和基因也决定了它在工程应用上的暂时落后,相关书籍也较少。对于我国数据科学从业者来说,R也是一门相对陌生的语言。听说魏博在翻译这本有关R语言开发应用的书籍,我非常欣慰。人们在R语言的实战书籍中又多了一种选择。同时,我也希望本书可以带动大家使用R进行实际开发的热情。学科和行业的发展需要百家争鸣。数据科学的利器越多,挑战和壁垒就会越容易攻克,人们获得数据价值的机会也就越大。
本书介绍了R语言在数据科学领域应用的方方面面,包括数据处理、数据操作、数据可视化、概率模拟、序列预测、频繁项集挖掘、监督式算法和非监督式算法等。本书注重R语言程序包的介绍和使用,这可以让读者省去很多无谓的精力,避免“重复造轮子”。特别是对于“唯快不破”的互联网行业来说,能够尽快使用成熟的开发包,是一件很幸福的事情。对于一名希望提升自己数据科学战斗力的读者来说,这本书也是不二选择。
魏博毕业于中国科学院数学所,读博期间就开始主攻用户需求建模和自动推理,后来负责阿里巴巴优酷大文娱视频搜索引擎的算法优化工作,目前在欧普拉软件新闻推荐部门负责用户画像算法。他在理解用户行为和用户数据挖掘方面有较深的造诣。同时他也是一名资深的R语言用户和R语言传播者。这本书的翻译也是对他自身能力的考验和体现。英文原版书有400多页,他能够在工作之余,牺牲节假日,4个月来静下心完成翻译实属不易。同时,R语言在国内的发展还有很长的路要走,特别是一些面向开发的技术术语的中文译法还没有达成广泛共识,在翻译过程中经常需要揣度和推敲。希望本书能够成为广大R语言数据科学爱好者共同阅读、共同推广的资源。
再次感谢魏博能够把机械工业出版社的优质外文资源翻译成书。也希望这本书能够成为大家手边时常翻阅的经典数据科学资料。
胡睿前微软资深研发总监现欧普拉软件技术(北京)有限公司副总裁译者序“数据科学”也许是近几年最热门的科技名词。从各种各样的互联网应用到AlphaGo的胜利,世界正在见证着数据科学带来的深刻影响。特别是我国在“互联网+”大潮推动下,海量数据每时每刻都在产生。无论是学术界,还是工业界,大量的科研人员都在这块数据金矿上挥洒青春和汗水。从数据中发现规律并应用到产品开发或者战略决策中,逐渐成为各行各业及各个企业公司的标准日常活动。同时,数据科学对于统计学、数据挖掘/机器学习算法,以及数据可视化等的需求也变得日渐迫切。一名掌握数据存储知识、数据科学算法、数据项目管理和数据可视化技术的人员,通常是多家用人单位的必争之才。
古语说:工欲善其事,必先利其器。处理海量、纷繁、动态的数据不是一件容易的事情。2013年,我在一篇科研论文上第一次结识了R语言。从那以后,我便开始了R语言道路上的各种探索。从最开始的编写算法脚本,到后来执著于Rmarkdown的使用,再到后来开发Shiny小程序,以及在服务器上执行计算。对我来说,从来没有一种语言让我觉得在数据科学的道路上如此顺畅和友好。然而,遍寻各种书籍和网上教程,很少有一份可靠的实践开发资料可以让读者体会到实际项目的“火药味”。很多书籍都在着重介绍R语言的基础知识,对于实际开发和各种强大的程序包都鲜有系统的介绍。这与R语言在我国的普及和发展程度不无关系。我想是时候推出一本书,让大家见识R语言和程序包的超强能力了。
本书便是一本注重R语言程序包实际应用的书籍。本书结构严谨,阐述通俗易懂,内容涵盖了R语言的绝大多数应用场景。同时,对于众人皆知的基础知识,本书不再赘述;对于一些高级技术,本书还提供了一些扩展阅读的资料,供学有余力的读者钻研探讨。值得提出的是,本书的作者丘祐玮是中国台湾地区活跃的数据科学家。他不仅拥有自己的数据科学公司,同时还服务于各大数据科学论坛,与中国大陆的数据科学工作者也有合作,是一位理论与实践并重的数据科学家。相信每一位读者都可以通过这本书学习到他的宝贵经验。
2016年9月,我受机械工业出版社的委托,承担本书的翻译工作。整个翻译过程历时4个月。这个过程也是自我温习、自我提高的过程。特别是