写点什么

《R for Everyone: Advanced Analytics and Graphics》书评与作者采访

2015 年 4 月 08 日

《R for Everyone: Advanced Analytics and Graphics》是一本关于R 编程语言以及用R 来完成数据分析和可视化的书,它的作者是Jared P. Lander。

这本书从如何下载、安装R 语言和配置环境开始讲述,环境配置包括命令行和RStudio IDE。

Jared 接着在书中讲述了 R 的数据结构,如帧(data.frames)、列表(lists)、矩阵(matrices)和数组(arrays)。这其中也包括了从 CSV、EXCEL 文档、数据库表和其他统计工具中来读取数据。

在书中作者继续讲述了基本的统计方法、线性和非线性模型。线性模型包括逻辑回归和泊松回归,而非线性模型则包括非线性最小二乘法(non-linear least squares),决策树( Decision Trees )和随机森林( Random Forests )。

Jared 同时也讲述了聚类模型如 K-means (基于距离的聚类算法)、PAM(Partitioning Around Medoids,围绕中心点划分算法)和 Hierarchical Clustering(分级聚类算法)。

InfoQ 采访了 Jared,内容包括 R 编程语言、这本书的情况、大数据分析和可视化等。

InfoQ:什么时候我们应该用 R 来进行数据探索而不是用其它的方案,如 Hadoop 和 MapReduce 呢?

Jared P. Lander:这并不是非此即彼的情况。R 可以处理内存中的数据,也可以被用作 Hadoop 和 MapReduce 作业中的编程语言。如果数据可以轻松放到一个合理大小的机器上,那就应该直接用 R 来探索;如果不是这样的情况,也可以在 Hadoop 上用 R 来进行数据探索。

InfoQ:你能谈谈一些流行的机器学习算法以及它们可以解决的用例或商业问题吗?

Jared:最近看到的最流行的算法和模型包括弹性网络(Elastic Net)、决策树和随机森林。当有多个预测器(predictors)时弹性网络表现非常好,这是因为它可以在保持广义线性模型解释能力(interpretability)的前提下执行不同的选择和规则化(regularization)。它最著名的实现是 R 中的 glmnet 包,这个包是 Jerome Friedman、Trevor Hastie 和 Rob Tibshirani 用非常高效的 FORTRAN 代码编写的。当预测器和响应之间存在非线性关系时决策树模型就是一个好的方案。决策树可以非常有解释性并且有很好的预测能力,这依赖于如何去修剪它。决策树的自然扩展就是随机森林,它把成千上万的树合并到一起来获得更强的预测能力,代价是牺牲了解释能力。这三种模型在需要预测的场景下执行效果都很好,比如定向广告、欺诈检测和运动分析。

InfoQ:如何去比较 R 语言和其它的机器学习框架,如 Spark MLlib 呢?

Jared:R 既是一种语言,也是统计算法实现的集合,相比而言,其它的机器学习框架的功能是预定义好的。所以,如果某个方法在 R 中还没有实现(这种情况很少见),那么完全可能用 R 这种语言去创建它。

InfoQ:你讲述了关于时间序列数据的分析,这种数据每天都由越来越多的设备生成。你能谈谈在分析这些时间序列数据时一些好的实践吗?

Jared:对于时间序列很重要的是说明其自相关性(autocorrelation),这意味着标准的方法不再适用。这个特性进一步延伸下去,就是要确保交叉验证(cross-validation)时数据的连续性。对于时间序列数据的分析可以应用几种不同的模型方法,包括自回归移动平均线(ARMA:autoregressive moving average)、广义自回归条件异方差(GARCH:generalized autoregressive conditional heteroskedasticity)和隐式马尔科夫模型(HMM:Hidden Markov model)。时间序列的群集(Clustering)也是需要特殊关注的,这里动态时间规整(dynamic time warping)用于测量序列间的距离。时间序列数据存储效率是处理时的另一个重要步骤,而 InfluxDB(开源、分布式的时间序列数据库)是个很好的解决方案。

InfoQ:你能大概谈谈数据可视化,以及 R 在可视化领域所扮演的角色吗?

世界上最复杂的分析如果它揭示的信息不能被有效交流和可视化,那么它也近乎无用,而数据可视化可能是最好的信息分享方式。一个图通常总会比一个数字表格能提供更好的解释。R 最大的一个卖点就是它的可视化能力。多年来它的标杆是 Hadley Wickham 的 ggplot2 包,它用令人惊奇少量代码提供了惊人的图形能力。Hadley 还创建了 ggivs 包,它本质上是 ggplot2 的版本但可以生成 Vega(基于 Web 的可视化语法)图形。Ramnath Vaidyanathan 编写了 rCharts 包,这样就可以在 R 中容易地创建 D3(Data-Driven Documents)图形。通过上述这些选择,R 可以非常容易和专业的进行数据的可视化。

InfoQ:对于想学习 R 的应用开发者来说,你有什么建议吗?是依据教程或者工具和 IDE 吗?

Jared:使用 R 最重要的工具就是 RStudio IDE,这个集成开发环境使得 R 的编码是如此简单和易于上手。它提供了如此多的便利和功能,所以说到它的益处绝不是夸大其词。R 非常好的一点还在于它是完全开源的,这样就有可能通过查看其他人的工作来学习 R。当然,我的书《 R for Everyone 》也是一个非常好的起点。

InfoQ:那么 R 作为编程语言有什么局限性吗?

Jared:大多数情况下,数据是要求保存在内存中的,所以数据的大小会受到计算机中 RAM 数量的限制。避开这个限制,传统的做法是使用计算机集群,然后可以通过 foreach 语句和 parallel 包来比较容易地实现。也有一些包是工作于磁盘上的数据,比如 bigmemory 和 dplyr,这些都非常有帮助。过去 R 的内存管理有一些问题,但在最近的版本中都有了相当大的改进。

InfoQ:在你看来,R 编程语言有哪些改进或新的特性呢?

Jared:在数据量不断增长的情况下,依然能用 R 去操作和分析那些保存在数据库中的数据是至关重要的。只要保证这个功能,那么我们就能乐见在更多的数据库中去应用 R。

InfoQ:请你对统计编程和大数据分析前景给些意见和思路吧,一般性的或者是针对 R 的。

Jared:有能力针对数据进行编程而不是依赖于那些点击操作工具可以帮助你改进生产效率,每个人都应努力成为有编程能力的人。他们的产出从数量和质量上将会有相当大的改进,所以为此投入时间肯定是非常值得的。这些适用于还在整天用电子表格工作的任何人士,他们的下一步应该是利用统计和机器学习从数据中提取更多的信息。这个技能将会有益于使用者及其听众。

关于《R for Everyone》的作者

Jared P. Lander是纽约城的统计顾问。他是纽约开放统计编程聚会(New York Open Statistical Programming Meetup)的组织者,以及纽约 R、预测分析和机器学习聚会的演讲者。Jared 专门研究数据管理、 多层模型(multilevel models)、机器学习、广义线性模型和统计计算。他的咨询范围从音乐、基金到金融和人道主义救援。他同时也在哥伦比亚大学教授 R 这门课程。作为哥伦比亚大学统计学专业硕士和数学专业学士,Jared 在学术研究和业界实践上都富有经验。

查看英文原文: R for Everyone: Advanced Analytics and Graphics – Book Review and Interview

2015 年 4 月 08 日 04:281284

评论

发布
暂无评论
发现更多内容

Spring Cloud微服务实战

田维常

微服务

BitQy交易所软件系统开发|BitQy交易所APP开发

开發I852946OIIO

秒杀系统设计的挑战和问题(转载)

jorden wang

必须清除互联网世界的毒瘤:网络谣言背后存在病态心理

石头IT视角

天源迪科获2020年度中国产业供应链(中央企业集采供应链)百强企业荣誉

DT极客

区块链商城系统开发模式制作

系统开发咨询:I76-883I-5I52 邓森

iOS 崩溃分析

ios 崩溃分析

带宽、延时、吞吐率、PPS 这些都是啥?

小林coding

Linux 操作系统 网络

5. 穿过拥挤的人潮,Spring已为你制作好高级赛道

YourBatman

Spring Framework 类型转换 Converter

IDC发布2021年中国云计算10大预测;Docker 桌面为 M1 推出技术预览版

京东智联云开发者

云计算 AI 程序人生

区块链多币种钱包app系统开发

系统开发咨询:I76-883I-5I52 邓森

还记得你的时间胶囊吗?

熊斌

个人成长 七日更

分布式文件系统(Hadoop HDFS)客户端写入机制

守护石论数据

hadoop hdfs 大数据技术 大数据架构 分布式文件系统

anyRTC加持AI,打造下一代实时音视频引擎

anyRTC开发者

人工智能 android 音视频 WebRTC RTC

基于App SDK和API搭建无人自习室等无人场景

IoT云工坊

物联网 智慧琴房 24小时无人自习室 24小时自助游戏厅 共享办公室

23 种设计模式的有趣见解

xcbeyond

设计模式 七日更

组态软件特征分析!同样都是拖拉拽,为什么别人的页面这么好看?

一只数据鲸鱼

物联网 数据采集 监控管理平台 组态软件

SQL:我为什么慢你心里没数吗?

Java架构师迁哥

源码解析Synchronized同步方法的八种使用场景,收藏

996小迁

Java 源码 架构 面试 synchronized

Java并发编程:AQS的互斥锁与共享锁

码农架构

Java Java并发

IPFS质押挖矿系统开发方案

系统开发咨询:I76-883I-5I52 邓森

源码输出纯净版SSM架构,收藏直接CV使用它不香吗?

小Q

Java 学习 编程 面试 ssm

2020年,关于【区块链运营】工作的11条思考

猫Buboo

比特币 区块链+

Kafka的控制器controller详解

数据社

kafka 七日更

RPC 核心,万变不离其宗

yes的练级攻略

Java 微服务 后端 RPC

菜鸟实时数仓2.0进阶之路

Apache Flink

flink 流计算

完全懵掉的电话面试

escray

面经 面试经历 101次面试 日更挑战 十日谈

堪称完美!阿里架构师亲自手撕”Spring Boot实战笔记“用60个案例给你整的明明白白

比伯

Java 编程 程序员 架构 技术宅

【年终总结】mybatis常见注解

田维常

mybatis

源码解析Synchronized同步方法的八种使用场景,收藏

小Q

Java 学习 架构 面试 多线程

被阿里、腾讯、华为追捧为最牛逼的 Java 框架你知道是什么吗?

Java架构师迁哥

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

《R for Everyone: Advanced Analytics and Graphics》书评与作者采访-InfoQ