MasterCui 2017-08-24
0.5 R与数据分析
计算机及互联网的发展深刻改变了数据分析的方式。一方面,可获取的数据量无论从规模上还是种类上都有了爆炸式的增长,导致了所谓“大数据时代”的来临,很多商业公司都有了 TB 甚至 PB 级别的数据规模,如何挖掘这些数据的潜在价值并以易于人理解的方式展示出来,越来越成为一个挑战;另一方面,个人电脑计算能力的快速增长和云计算等 IT 基础设施的迅速普及,让计算的成本大幅下降,初学者也可以运用各种专业的数据软件,通过交互的方式分析数据。现在,市场上有各种各样的专业统计分析软件,比如SAS、SPSS 、Stata、Minitab、Excel、R等等,本书选择R作为统计分析工具。
0.5.1 R基本介绍
R 是 S 语言的一种实现。早在1977年,大名鼎鼎的贝尔实验室就开始了一个名为“S”的研究项目,用于进行数据探索、统计分析和图形化展示。最初 S 语言的实现版本主要是 S-PLUS ,它是一个收费的商业软件。后来新西兰奥克兰大学的 Robert Gentleman 和 Ross Ihaka 及其他志愿人员开发了开源免费的系统,由于两位创始人名字都以“R”开头,所以就称之为R语言。
R 是一套完整的数据处理、计算和制图软件系统,对于初学者来说,R 就是一套统计分析软件,可以实现很多的统计分析功能。但 R 借助其强大的包功能可以无限拓展功能。所以与其说 R 是一种统计软件,还不如说R是一种数学计算的环境,在其基础安装中,它包含了一整套数据管理工具、数组向量和矩阵运算工具、统计分析工具和图形展示工具。更多的功能,包括各种数据挖掘算法、机器学习算法以及特定行业的数据分析工具等都是通过包的形式来提供。
0.5.2 R语言的主要优势
统计分析软件很多,入门的比如 Excel 、WPS表格等表格类软件就能实现简单的统计分析功能,专业的如 SAS 已经成为某些行业的标配、事实上的工业标准,新锐的如 Python ,在大数据、机器学习领域异军突起。那么我们为什么要选择学习 R 呢?这是因为 R 有以下的优势。
免费。 大多数商业统计分析软件非常昂贵,个人用户和一般小微型企业很难负担,而 R 是免费的。
开源。 R语言不仅免费,而且开源,这就意味着 R 有一个活跃的社区,代码更新速度快、反应迅速。
全面。 R 已经形成了庞大的生态系统,提供了你所能想象的几乎所有种类的数据分析功能,其官方代码库CRAN目前已经有超过10000个可用的包,囊括了数据分析的方方面面,包括现在炙手可热的 TensorFlow、Prophet 等都有 R 版本或者接口。最重要的是,经典的统计学教程大多是以 R 做为教学工具的。
可视。 可以毫不犹豫的说, R 的数据可视化是所有数据分析软件中最强大的,没有之一。
编程。 R 具有强大、灵活的编程系统,支持面向对象、函数化等各种现代编程语言特色,用户可以很轻松地编写自己的函数和包,实现自定义的分析功能。
交互。 R语言的数据分析过程是交互式的,数据分析的任何中间结果都可以被保存、分析,这对初学者尤其有用,因为可以学会如何真正理解分析的过程,掌握算法的实质。
当然,R 也有许多劣势。最大的劣势就是学习曲线相对陡峭,尤其是学习过其它语言如 Java、Python 的,由于 R 是面向数据和统计的语言,其编程思想、命名规则都和传统语言有较大的区别,因此刚开始学感觉会比较难。但是,只要你多加练习,度过最初的瓶颈期,你会发现 R 并不难以掌握。
0.5.3 R与Python的对比
近年来,Python 在数据分析领域异军突起,其语法优雅、简洁,容易学习、易于建模,并且已经有了很多高质量的机器学习库。所以很多初学者经常会纠结于到底选择 R 还是 Python。关于这一点,仁者见仁、智者见智,网上有很多分析对比的文章。较为全面客观的一个对比来自 karlijn-willems 的文章 Choosing R or Python for data analysis? An infographic,中文版本则在 数据科学界华山论剑:R与Python巅峰对决 中。在这篇文章中,作者从定位、用户群、社区支持、实用性、灵活性、易学习性、数据处理能力、人气排名、薪资等多个方面对两者做了比较,结论是两者一样好,每个人都应该根据自己的需要来选择。
对此,作者也进行了一些思考,总结起来有以下几点:
第一,打好基础,主要是数学和统计学基础知识,这与使用什么工具无关,无论是 R 还是 Python,都只是我们学习的工具,且不可依赖。
第二,R 是由统计学家发明的,其更加学术化,也更加正统,是统计学的通用语言;Python 是由程序员创造的,是一门通用的语言,在机器学习等新锐领域发展迅速,从实现上来说更加工程化。
第三,两者是互相补充的,都有调用对方功能的接口,且学好其中一个,再学另外一个会很容易,所以最好的选择是两者都学,在实际项目中根据情况选择使用。
本书的核心是从统计学基础知识开始学数据分析,在这方面 R 更加全面和健壮,因此选择 R 作为教学语言。
0.6 R 学习及开发环境的搭建
0.6.1 安装并启动R
R 软件免费向所有人提供,有 Windows、Unix、Linux、Mac 等各种操作系统的版本。本书使用的是 Windows 系统,不同的操作系统下R差别不大,读者可自行研究。 R 的官方主页为 https://www.r-project.org,打开主页后下载相应平台的安装包按照要求安装即可。默认的安装会同时安装32位和64位的版本,可根据你自己操作系统的情况选择使用相应的版本,本书所用为64位版本。
安装完成后,即可点击桌面或者开始菜单上出现的R图标启动R,启动界面如下:
R 是一种解释型的语言,你可以在命令提示符 > 后输入你想要执行的一条命令,或者一次性执行写在脚本文件中的R程序。比如,你可输入 1 + 2,然后按回车键,R会将计算结果 3 显示出来。
0.6.2 安装 RStudio
R 自带的开发环境集成化程度不高,缺少现代编程语言工具的很多高级功能,使用起来不是很方便。所以一般我们学习 R,还需要额外安装一个集成开发环境(IDE)。本书强烈推荐 RStudio,它是一个专门为 R 定制的 IDE,分免费版和商业版。免费版可满足大部分场景需要,商业版则增加了某些高级功能,如 R 服务器、多会话管理等等。本书全部代码均在 RStudio 中实现。
RStudio 的官方网站是 https://www.rstudio.com。 下载完成后按照提示安装。完毕后,点击桌面或者开始菜单中生成的图标即可启动 RStudio(启动时会自动启动 R ),启动界面如下。
RStudio 界面比 R 原生界面丰富的多,功能也更加强大。其界面大致分为四个区域,左上为脚本区,可以写R脚本;左下为控制台区,可以互动输入R命令;右上为环境和历史区,可以显示操作历史,以及当前变量;右下为功能区,包括 Files、Plots、Packages、Help、Viewer 五个功能标签窗口,其中 Files 窗口类似文件浏览器,可以浏览当前工作目录下的文件; Plots 为图表窗口,显示绘图结果; Packages 为包管理窗口,显示当前安装的包,并能勾选载入内存;Help 则显示帮助 。
RStudio支持自动补全和语法高亮,还可以自定义编辑器的主题和配色。可以通过点击菜单 Tools => Global Options 打开全局配置对话框,自定义编辑器参数。
左上的脚本区可编写R脚本,编好后可选中要执行的代码点击RUN按钮运行代码。若不选择代码则默认运行当前行,若选择了代码则只运行选中的代码。关于RStudio的更多功能,请自行查看文档和教程学习,本书不再详细介绍。
0.6.3 安装Microsoft R Server
R 基于内存管理数据,这在学习和小规模数据分析中并无不妥,但在大规模数据分析中,会造成严重的性能瓶颈。虽然有很多优秀的扩展包很大程度上增强和改善了 R 性能,但在企业级大数据挖掘前,经常会显得力不从心。
幸运的是,现在我们可以使用微软开发的 R Server 来解决这个问题。Microsoft R Server 原来为 Revolution Analytics 公司的产品,名为 Revolution R,微软在2015年收购了该公司,并进行了大量的整合和优化,可以在一个从工作站到集群的高性能并行结构中运行 R 脚本,包括 Hadoop 和企业级数据仓库,以支持企业级规模的数据分析。R Server 支持基于 R 的全套数据分析过程、探索、分析、可视化和建模等,支持各种大数据分析、预测模型和机器学习功能并增加了并与开源 R 脚本、函数和 CRAN 软件包百分百兼容。
之前 Microsoft R Server 只对高校学生免费试用。现在,该产品免费提供给所有人试用。用户在注册微软开发者账户后,即可登录 https://my.visualstudio.com 下载安装。具体的安装和使用请自行查看相关文档或教程。
喜欢闲适安静的生活,懂一点统计学和数据分析,懂一点计算机编程。(爱编程爱统计)