Preface 前 言
自20多年前发源于学术界以来,R语言已经成为统计分析的通用语言,活跃于众多产业领域。目前,越来越多的商业项目开始使用R,兼之R用户开发了数以千计易于上手的开发包,都使得R成为数据分析工程师及科学家最常用的工具。
本书将帮助读者熟悉R语言这一开源生态系统,并介绍一些基本的统计背景知识,以及一小部分相关的数学知识。我们将着重探讨使用R语言解决实际的问题。
由于数据科学家在数据的采集、清洗及重构上将耗费大量时间,因此本书首先将通过第一手实例来重点探讨从文件、数据库以及在线资源中导入数据的方法,然后再介绍数据的重构和清洗——不包含实际的数据分析,最后几章将对一些特殊的数据类型以及经典的统计模型和部分机器学习算法进行说明。
本书主要内容第1章从与所有数据相关项目都有关的关键性的第一步——从文本文件和数据库中导入数据开始。重点探讨使用优化的CSV分析器把数据载入R,预筛选数据,并对不同数据库后台对R的支持能力进行比较。
第2章介绍如何使用面向Web服务和API通信的包实现数据的导入,包括如何从主页上整理和抽取数据。还将对处理XML和JSON格式数据进行概括性说明。
第3章继续介绍基础的数据处理知识,包括多种数据筛选和聚集,并对data.table和dplyr这两个常见开发包在性能和使用语法方面进行比较。
第4章介绍更多有关复杂数据类型的转换方法,相关函数包括处理数据子集、数据合并、长宽表数据格式到适合用户需要的工作流源数据格式之间的转换等。
第5章开始介绍真实的统计模型,包括回归的概念、常用回归模型等。这一章篇幅不长,还介绍了模型测试的方法以及基于真实数据集如何解释某个多元线性回归模型结果。
第6章在前述章节的基础上,探讨了预测变量的非线性关联,以及诸如逻辑回归和泊松回归等广义线性模型的样例。
第7章介绍一些新的非结构化数据类型,读者将通过实践文本挖掘算法及对结果的可视化处理,了解使用统计模型来处理类似这样一些非结构化数据的方法。
第8章探讨有关原始数据集的另一个常见问题。大多数时候,数据科学家需要处理脏数据,包括去掉错误数据、孤立点以及其他不正确的值,同时又要将缺失值带来的影响降到最低。
第9章介绍如何从大数据中进行特征提取,假设我们已经装载了一个干净的数据集,并且完成了格式转换,当我们开始处理高维变量时,需要采用一些统计方法来进行降维以及其他包括主成分分析、因子分析和多维尺度分析等方法完成连续变量的转换。
第10章讨论使用监督及非监督统计和机器学习方法来处理样本分组问题。这些方法包括层次聚类、k均值聚类、潜类别模型、判别分析、逻辑回归和k近邻算法,以及分类树和回归树。
第11章重点探讨一类特殊的数据结构,包括其基本概念以及可视化网络分析技术,igraph包是该章的重点。
第12章展示如何通过平滑、季节性分解以及ARIMA等方法处理分析时间-日期数据及其相关值,同时还将讨论有关预测和孤立点检测等技术。
第13章探讨一类重要的数据维度——空间维,重点会放在通过主题图、交互图、等高线和冯洛诺伊图完成空间数据的可视化。
第14章提供了一个更完整的样例,该样例中包含了很多前述章节中提到的方法来帮助读者复习这本书所学习到的主要内容,以及应对未来工作中可能遇到的问题和困难。
附录给出了R语言的帮助索引,以及对前述章节中涉及内容的补充阅读。
阅读准备本书所展示的代码都应该在R控制台内运行,读者需要事先安装好R,可以从http://r-project.org下载免费软件以及为所有主流操作系统准备的安装指南。
本书并不会探讨其他更深入的内容,例如在集成开发环境(Integrated Development Environment IDE)下使用R的方法,尽管IDE为诸如Emacs、Eclipse、vi、NotePad++都提供了非常棒的插件和扩展。当然,我们还是建议读者能够使用RStudio,这是一个为R开发的开源免费IDE,访问地址为https://www.rstudio.com/products/RStudio。
除了基础的R包,我们还会使用到部分用户自己提供的R包,它们大多都可以很容易地从R综合典藏网(Comprehensive R Archive Network,CRAN)处下载安装。附录中列出了本书用到的开发包以及多个版本。
如果要从CRAN安装包,读者要确保网络通畅。假如要下载二进制文件,可以在R控制台调用install.packages命令:
本书中所提到的部分包在CRAN上下载不了,但也许可以从Bitbucket或者GitHub处找到安装文件,然后再通过调用devtools包的install_bitbucket和install_github函数完成安装。Windows用户则需首先从https://cran.r-project.org/bin/windows/Rtools处安装rtools包。
安装完毕后,我们应该在使用包之前先将其装载到R会话中,附录中列出了所有包的目录,而每一章的一开始则对相关的源码和R命令做了介绍:
我们极力建议读者下载安装本书的样例源码(可以参考前言的“样例源码下载”小节),这样读者就可以在R控制台很容易地复制和粘贴相关命令,而不需要再按照书中文字输入代码。
如果读者之前没用过R语言,最好能够先从R主页上阅读一些免费的介绍性文章和帮助手册,本书附录中也列出了一些推荐阅读材料。
读者人群如果你是数据科学家或者是R开发人员,希望更多地了解有关R的高级功能及工具,那么这本书就是为你而写。本书希望读者已经具备基础的R语言知识,了解数据库的逻辑。如果你是数据科学家、工程师或分析师,希望提高自己对R语言的开发能力,那么这本书也适合你。尽管需要掌握一些基本的R知识,本书还是为你提供了相关参考文档,能够帮助你快速进入角色并掌握相关技术。
本书约定本书中任何将在R控制台输入或输出的命令行将采用如下格式:
符号“>”有提示的意思,指此处R控制台正在等待要输入执行的命令。如果命令长度超过一行,则第一行还是用“>”开头,但剩下的其余行都要在行首添加符号“+”,代表该行不是一个完整的命令(例如,缺圆括号或引号)。命令的输出不需要增加任何首字母,字体采用和输入文本相同的等宽字体。
新出现的术语和重要的文字将用粗体表示。
警告或重要提示将跟在这样的符号后面。
小窍门或诀窍将跟在这样的符号后面。
样例源码下载你可以从http://www.packtpub.com通过个人账号下载你所购买书籍的样例源码。如果你是从其他途径购买的,可以访问http://www.packtpub.com/support,完成账号注册,就可以直接通过邮件方式获得相关文件。
你也可以访问华章图书官网:http://www.hzbook.com,通过注册并登录个人账号,下载本书的源代码。
下载书中彩图我们还为读者准备了一个PDF文件,该文件包含了本书所有截图和样图,可以更好地帮助读者理解输出的变化。你可以从以下地址下载:
http://www.packtpub.com/sites/default/files/downloads/1234OT_ColorImages.pdf
The Translator’s Words?译 者 序R语言在数据分析与机器学习领域已经成为一款重要的工具,根据Tiobe、PyPL以及Redmonk等编程语言的人气排名结果显示,它所受到的关注程度正在快速提升,并成为统计领域最具人气的语言选项。了解并掌握R语言的编程开发,也就意味着我们能够更高效地分析和处理数据。
位于英国伯明翰的Packt公司是世界上发展最快、产品最丰富的技术书籍出版商之一,本书是Packt公司近年推出的又一本技术力作,全书一共分为14章,重点探讨了数据预处理的方法,包括数据获取、筛选、重构、建模、平滑以及降维,本书还介绍了分类和聚类等几种主要的数据分析方法,以及网络数据、时序数据、空间数据及社交媒体数据等一些特殊类型数据的分析处理。本书以数据科学家、R开发人员和具备基础R语言知识的工程师为目标读者,通过阅读本书,读者能够更多地了解有关R的高级功能及工具,同时提高R语言的开发能力。为了照顾初学者,尽管作者没有过多地介绍R语言的基本知识,但依然很贴心地提供了相关的参考资料,以帮助读者快速进入角色并掌握相关技术。
本书作者盖尔盖伊?道罗齐(Gergely Daróczi)是一位狂热的R用户及开发人员,也是rapporter.net网站的创始人及CTO,现就职于洛杉矶的www.card.com网站,担任首席R语言开发及研究的数据专家。受作者自身的研究背景影响,本书花了相当多的篇幅分析在数据预处理环节开发人员可能遇到的各类问题,并给出了多种经过实践证明的解决方案。书中所有源代码和实验数据在华章网站(www.hzbook.com)上都可以免费下载,相信阅读完本书并亲自动手实践完成所有案例方法后,读者将对在数据科学领域应用R语言有更深入的了解,也将对数据处理及分析有更多的领悟及体会。
本书能够得以出版,要感谢机械工业出版社的缪杰和何欣阳编辑,他们在翻译过程中给予了我很多建设性的指导意见。其次,还要感谢吴怡编辑,是她让我与机械工业出版社结缘。
由于教学科研需要,译者很早就已经接触了R语言,之前翻译《机器学习与R语言实战》一书,也让我获益匪浅,但由于学科发展速度日新月异,在翻译过程中我仍然遇到了一些问题,尽管在此期间我查阅了大量的文献及网络资源,并逐字逐句地对译稿进行了反复推敲和琢磨,但还是不可避免地存在错误和疏漏之处,还望各位读者不吝指正。
潘怡2016年8月