加载中…
个人资料
daniel_ctp
daniel_ctp
  • 博客等级:
  • 博客积分:0
  • 博客访问:220
  • 关注人气:6
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Rattle :基于R的数据挖掘工具

(2013-11-08 14:33:36)
标签:

r语言

Rattle :基于R的数据挖掘工具(1):简介和安装

1.Rattle是什么
     数据挖掘是当今时代的一门核心技术,提供了对大数据的描述,探索,模式的识别和预测。数据挖掘者们从统计,机器学习和计算科学中寻找各种适用的方法和工具。很多专门或通用的数据软件包被先后开发出来。

     作为优秀的统计软件包,R语言也提供了强大的数据挖掘工具,但是这些工具分散在数以百计的R 包之中,而且写脚本和编程往往也会成为快速解决问题的障碍。rattle包的出现很好的解决了这个问题。

    Rattle是一个用于数据挖掘的R的图形交互界面(GUI),可用于快捷的处理常见的数据挖掘问题。从数据的整理到模型的评价,Rattle给出了完整的解决方案。Rattle和R平台良好的交互性,又为用户使用R语言解决复杂问题开启了方便之门。Rattle易学易用,不要求很多的R语言基础,被广泛的应用于数据挖掘实践和教学之中,在澳大利亚,有至少15个政府部门采用Rattle作为标准的数据挖掘工具(http://en.wikipedia.org/wiki/Rattle_GUI)。

2.Rattle的实现
     在R中,Rattle使用RGtk2 包提供的Gnome图形用户界面,可以在WINDOWS,
MAC OS/X,Linux等多个系统中使用。
  
    图形界面GUI由Glade 交互界面生成器开发,这会产生一个于编程语言无关的XML描述来用来生成用户交互界面的窗口部件。

    Glade允许开发者自由的选择特定的编程语言来实现功能,对Rattle来说,这个语言就是R。最早的Rattle事实上是使用Python来实现回调(callbacks)
使用rpy调用R完成统计工作。RGtk2包的出现,使得Rattle的界面实现完全由R来写成,这样Rattle才完全成为了一种基于R的应用。
  
  Rattle基于大量的R包:RGtk2, pmml, colorspace, ada, amap, arules, biclust, cba, descr, doBy, e1071, ellipse, fEcofin, fBasics, foreign, fpc, gdata, gtools, gplots, gWidgetsRGtk2, Hmisc, kernlab, latticist, Matrix, mice, network, nnet, odfWeave, party, playwith, psych, randomForest, reshape, RGtk2Extras, ROCR, RODBC, rpart, RSvgDevice, survival, timeDate, graph, RBGL, bitops等等。借助于这些包,Rattle可以实现特殊的统计计算,图形设备,输入输出等等功能。这些R包会在Rattle的安装和使用过程中会不断地安装在你的R 当中。

     Rattle不仅仅是一个所见所得GUI工具,它还有很多扩展功能。pmml包是在Rattle基础上发展起来的一个R包,它使用基于PMML的开放标准XML ,或预测模型标记语言。按这种方式由R导出的模型可以输入类似于由云计算机驱动的ADAPA决策引擎的工具,从而可以在多个平台上运行。

3.Rattle的安装
   在WINDOWS系统中的安装(其它系统俺没用过)。
   首先需要安装R,然后要保证Gnome 和Glade已经安装在电脑上。
   Rattle的资源代码由http://rattle.googlecode.com提供,可以象安装R包的方式进行安装(本来就是个R包嘛)。
  在R控制台,键入:

> install.packages("RGtk2")
> install.packages("rattle")

  可以完成rattle 包的安装。
  载入这个包:

> library(rattle)
> rattle( )
  
 Rattle的界面出来了

下面就开始Rattle的数据挖掘之旅吧。

参考:
1 Graham J Williams,Rattle: A Data Mining GUI for R,The R Journal Vol. 1/2, December 2009.
2 Graham J Williams, Data Mining with Rattle and R, Springer Verlag,2011.

ps:关于Data Mining with Rattle and R这本书,我觉得作者很努力地想把R,Rattle,和数据挖掘这几个主题融合到一起,但是关于数据挖掘的算法介绍流于“直观”,关于R的数据挖掘讲解的又不够,篇幅所限,也是很难为了。


 

Rattle :基于R的数据挖掘工具(2):功能概览

Rattle的界面,依次排列的是菜单,工具栏和标签栏。

1.Rattle的标签栏

一个完整的数据挖掘过程包括以下几个步骤(CRISP-DM,1996)
(1) 理解问题
(2) 理解数据
(3) 准备数据
(4) 建立模型
(5) 模型评估
(6) 运用

基于这个流程,Rattle开发了一个方便的标签栏,可以便捷的完成操作。

这个标签栏从左到右依次排列,各自完成数据挖掘的一个相关步骤。

Data:选择数据源,输入数据。
Explore:执行数据探索,理解数据分布。
Test:提供各种统计检验。
Transform:变换数据的形式。
Cluster:数据聚类,包括系统聚类,k-均值聚类,和双聚类(biclustering)。
Associate:关联规则方法。
Model:内容最丰富的一个标签。包括多种方法:决策树,支持向量机,线性模型,
神经网络,随机森林,提升(Boost)。


Evaluate:模型评估,它会提供一个实际结果和预测结果进行比较的误差矩阵。
Log:数据挖掘过程的纪录。它可以给出所进行的Rattle操作的R代码,利用这个标签,可以学习R的数据挖掘过程,也可以把纪录以文本形式输出,在R 平台中实现R和Rattle的交互。

2.Rattle的工具栏和菜单
 Rattle工具栏上最主要的一个按钮是Execute按钮(执行)。所有的操作都要点击Execute来完成(对应的快捷键是F2)。

Report按钮,可以完成当前操作的格式化报告(以开放的标准ODT格式)。
Export按钮,可以输出来自Rattle的各种对象,特别的,完成Moel标签的相关操作后,它会以PMML格式保存当前模型。

Rattle工具栏和标签栏完成的大部分工作,使用菜单也可以完成。菜单很平凡,特别要指出的一点是,setting菜单中的Use Cario Graphics Device这一项要选中,这样图形才会以Rattle图形设备的形式输出,否则,会作为R图形输出。


 

Rattle :基于R的数据挖掘工具(3):载入数据

数据

数据是进行数据挖掘工作的基础,要是没有数据,那也就没什么可挖的了。当今时代,数据的丰富超乎想象,它可以是数字,也可以是文本,图像,声音,视频等各种形式的存在。但是要把数据变成知识和信息,并不是一件简单的事。

关于数据的一般术语:
一个数据集由变量(列)的各个观测(行) 构成,其中变量可分为输入变量和输出变量,这些变量可以是数值的也可以是属性的(categoric variables)。
为了完成数据挖掘工作,首先需要把数据保存在各种系统中。要把形式和格式各异的数据组织成我们挖掘工作所需的形式。数据的收集,整理,存储和访问是一项重要的工作

载入数据

数据会从不同的来源,以不同的形式进入我们的项目。借助于R的数据处理能力,Rattle可以载入多种来源的数据。

(1)csv数据
csv数据是一种很简单普通的逗号分隔型取值格式,一种纯文本的数据存储格式。在csv中,数据的字段由逗号分开,程序通过读取文件重新创建正确的字段。csv数据可以说是R当中(当然也是Rattle当中)输入数据的首选格式。csv文件可以在电子表格和各种数据库之间输入输出,包括LibreOffice Calc, Gnumeric,, Microsoft Excel, SAS/Enterprise Miner, Teradata, Netezza等等。

在Rattle里载入csv数据
使用Data标签的Sprasdsheet选项,这个选项可以载入csv,txt,和execl数据文件。选中Sprasdsheet后,点击Filename,选择相关数据文件,最后按执行按钮。




在Rattle里有三个作为例子的csv数据集




来选择weather.csv,看看数据载入的结果。




在界面上会给出数据集的变量的名称和内容,也就是基本的数据汇总。

在载入数据文件的时候,用到了Rattle界面的两个参数,Separator 和 Header。Separator表示文件中字段的分割形式,如csv文件是逗号而txt文件是使用tab键,在Separator中应用 \\t。选中Header参数会给出变量名(列名)。如果你的csv文件中不包含变量名,不要选这一项,否则会误把第一行作为变量名读入。

载入weather.csv数据还有一种简易方式,执行--- 弹窗选是即可。


(2)其它的数据类型
ARFF 数据:Attribute-Relation File Format,是一种文本格式的文件。本质上来说,ARFF格式其实就是带有元数据(关于数据格式的信息)的CSV格式。weather示例数据也有ARFF格式版本提供。

ODBC 数据:The Open Database Connectivity (ODBC) standard,这是在数据库中访问数据的一般方法,这是基于SQL语言的技术。通过ODBC来访问数据需要通过DSN给出数据来源。




R 数据集和其它的数据来源,包括SPSS数据,XML数据等,把它们转化为数据框即可用于Rattle中。注意这些数据要被放入Rattle的库里边。在R的安装目录下可以读取一般的R数据。

Library:很多R包都提供了示例数据集,Rattle也可以读入它们。

语料库(Corpus)和脚本数据(Script)。


 

Rattle :基于R的数据挖掘工具(4a):探索数据

在建立模型之前,可以通过数据探索分析(exploratory data analysis,EDA)来获得关于数据的深刻认识。数据探索可以帮助我们了解数据的形状,数据的边界(最值),数值特性和散布程度,发现有问题的数据,缺失的数据,噪声,有偏的分布。数据集就是一个故事,我们需要把这个故事有效的还原为我们能够理解的形式。

数据探索分析是数据挖掘项目的核心步骤之一,通过探索分析得到的数据变量概括和可视化的图形结果构成我们对数据集的基本理解,并选定合适的变换或工具来进行进一步的分析。

Rattle的Explore标签提供了大量的探索数据工具。


下图是Rattle的 Explore的内容。




(1)汇总数据
Summary选项。




在这一项里,给出关于数据集的各种汇总和描述性的统计量,包括峰度,偏度,缺失值汇总和针对属性变量各因子水平的交叉列联表。

(2)分布探索
Distributions选项。





这个选项以可视化的方式,给出各个变量的分布特征。可以勾选相应的图形选项,按执行按钮绘图。对于数值型变量,可以画出四个图:箱形图,
直方图,累积分布图和benford图
这是weather数据集中,MinTemp变量的分布情况,以RainTomorrow为分组变量。




这个是benford图,此图来自所谓的Benford法则,给出数字首位数1~9在这些数字中的经验分布。(近似幂律)
参见:
http://zh.wikipedia.org/zh-hans/本福特定律




对于属性变量,可以画3个图:条形图,点图和马赛克图。
windGustDir变量的分布情况,以RainTomorrow为分组变量:
点图,给出的是属性数据因子各水平下得频数。




马赛克图:




马赛克图是表现多维列联表数据的一个工具。它的表现形式为与频数成比例的矩形块,整幅图形看起来就像是若干块马赛克放置在平面上。马赛克图背后的统计理论是对数线性模型(log-linear model)。Rattle中的马赛克图是某个属性变量各水平关于另一个变量(一般是目标变量)的图形。
在《R in Action》那本书中,用泰坦尼克遇难乘客的数据绘制了一张马赛克图,很好的说明了如何用可视化来讲数据的故事。


在分布这个选项中,如果不勾选任何图形,直接按执行按钮的话,会画出来一张散点图矩阵(这个图是包含所有变量的,但是变量数目太多的话,可能显示不出来),这个图对角线是各个变量的直方图。下侧是散点图,上侧是变量的相关系数。

如果在作图的时候需要改变分组变量,可以在Data标签的Target Data Type 选项进行修改。

本篇参考:
1 谢益辉 《现代统计图形》 。本书尚未正式出版,但是网上很容易找到本书的beta版
2 Robert Kabacoff,R in Action 。


 

Rattle :基于R的数据挖掘工具(4b):探索数据

(3)相关性
Correlation选项。计算数值变量间的相关系数。




相关系数可以采用pearson,kendall,spearman三种方法。会输出相关系数矩阵。

可以把结果可视化。




这个图当中,红色表示负相关,蓝色为正相关,颜色越浅相关系数(绝对值)越小,越接近直线,相关系数(绝对值越大)。

这个选项还可以探索缺失值的相关性。
数据集当中常有这样的情况:一个在某个变量上有缺失值的观测在别的变量上也很可能有缺失值。
选择ExploreMissing并执行后,会输出相关系数矩阵,这里的相关性表示的是两个变量在缺失值的数量上的联系。这个矩阵包括所有带有缺失值的变量(包括属性变量)




在计算缺失值相关性时,应把Data标签的Partition选项关闭,来保证对完整的数据集计算。

Hierarchical选框,计算层次相关性。
输出一个可视化的结果:




事实上,这个图形就是使用变量间的相关性按照层次聚类法(系统聚类法)来对变量进行分类。聚类的距离是变量间的相关性。

(4)主成分
Principal components 选框提供主成分分析来探索数据。

通常主成分分析作为一种数据降维的方法。在数据探索当中使用主成分可以用来发现数据集中用来解释样本变差的重要变量。样本的各个主成分就是用来描述数据最大变差的互不相关的原始变量的线性组合。

Rattle计算主成分,有两种方法,一种是计算样本协方差矩阵的特征值和特征向量(国内的教科书常用这种方法)(Eigen)。另一种方法是对数据矩阵进行奇异值分解(SVD)。
作为结果,在SVD方法中,给出标准差,主成分系数和贡献率,累计贡献率。
在Eigen方法中,只给出标准差和贡献率,累计贡献率。两种计算的结果是有差异的。

同时,两种结果都会画出碎石图和biplot图
下面是以weather.csv数据集为例,以SVD方法的结果:






上一个是碎石图,用来表示各个主成分的相对重要程度,可以作为选择主成分的一种直观依据。
下一个是biplot图。这个图给出了样本点在第一主成分和第二主成分坐标系下的位置(即主成分得分),同时表示了这些样本点在原始变量坐标系中的相对位置,图中红色箭头即表示原始变量坐标系。原始变量以红色标出,黑色为样本点。

(5)交互图
可以用latticist和GGobi两种方法,以交互的方式探索数据。其中latticist依赖R的lattice作图系统,而GGobi依赖同名的软件。需要安装GGobi软件,以及相应的rggobi包。

我们可以利用它们做出散点图,条形图和平行坐标图。

除此之外,还有一个Plot Buider选框,可以制作多种类型的统计图。这里用了Java的技术。

具体形式,独立成篇吧。


 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有