您的位置:首页 > 其它

《R语言与数据挖掘最佳实践和经典案例》阅读摘要

2015-05-24 10:42 579 查看

《R语言与数据挖掘最佳实践和经典案例》阅读摘要

Fly or die.—–sissp

一、简介

数据挖掘

统计学、机器学习、信息检索、模式识别、生物信息学

R CRAN(cran.r-project.org)

《An introduction to R》

《R language definition》

数据集

Iris数据集

Bodyfat数据集

二者都包含在R包中

二、数据的导入与导出

R数据的保存与加载

Save(a,file=“./data/dumData.Rdata”)

Rm(a)

load(“./data/dumData.Rdata”)

Print(a)

CSV文件的导入与导出

从SAS中导入数据

通过JDBC导入与导出数据

三、数据探索

查看数据,以iris数据集为例

维度,dim(iris)

名称,names(iris)

结构,str(iris)

属性,attributes(iris)

特定行数据,iris[1:5,],head(iris),tail(iris)

探索单个变量

单个数值型变量的分布情况可以使用函数summary()进行查看,分别为:最小值、最大值、平均值、中位数、第一四分位数、第三四分位数

平均值、中位数和极差可以分别使用函数mean()、median()、range()获取,四分位数和百分位数可以使用quantile()函数

三、数据探索 探索单个变量(续)

方差,var()

分布直方图,hist()

密度估计值,density()

频数,table()

饼图,pie()

条形图,barplot()

探索多个变量

协方差,cov()

相关系数,cor()

Aggregate()函数,计算统计数据

箱线图,boxplot()

散布图,plot(),使用with函数后可以省去iris$前缀s

三、数据探索

更多探索

3D散布图,scatterplot3d包,Scatterplot3d()

交互3D散布图,rgl包,plot3d()

Lattice包

Graphics包

Ggplot2包

将图表保存到文件中

Bmp() jpeg() png() ptiff() pdf() postscript()

四、决策树与随机森林

Party包构建决策树

以iris数据集为例,采用ctree()函数建立决策树

Predictt()函数进行新数据的预测

rpart包构建决策树

函数rpart()构建决策树,用bodyfat数据集为例

函数predict()对新数据进行预测

随机森林

randomForest包建立预测模型,两个限制:不能处理带缺失值的数据,分类属性水平划分数量最大值为32,

以iris数据集为例,训练一个随机森林,变量的重要性可以用函数importance()和varlmpPlot()获得,最后使用测试集对已经构建好的随机森林进行测试

五、回归分析

线性分析 lm()

利用预测变量的一个线性组合函数来预测响应变量的统计分析方法

利用函数lm()做回归分析

画出散点图,分析统计量,建立回归模型

逻辑回归 glm()

使用数据拟合一条逻辑曲线来预测事件发生的概率,可以由函数glm()建立逻辑回归(参数需要设置)

广义线性回归 glm()

通过使用一个连接函数关联线性模型与响应变量,并且考虑所有度量偏差对预测值的影响来建立线性回归

非线性回归 nls()

六、聚类

K-means聚类

将iris数据集移除species属性,再调用函数kmeans(),将聚类结果保存,绘制簇和中心

K-medoids聚类

使用函数pam()和pamk()进行聚类

与k-means聚类区别在于:k-means聚类选择簇中心表示聚类簇,而k-medoids聚类选择靠近簇中心的对象表示聚类簇,在含有离群点的情况下,k-medoids聚类的鲁棒性更好

基于中心点的划分PAM算法是k-medoids的经典算法,CLARA算法是对PAM算法的改进,当处理较大的数据集时,CLARA算法优于PAM算法,cluster包的pam(),clare()分别实现上述两个算法,fpc包提供函数pamk(),不需要给出聚类簇的个数根据最优平均阴影宽度进行划分

六、聚类

层次聚类

使用函数hclust()进行层次聚类

基于密度的聚类

基本思想是将密度相连的对象划分到同一个簇,优势在于可以发现任意开关的簇,并且对噪声数据不敏感,相比之下k-means算法更倾向于发现球状的且大小相近的簇

Fpc包中的DBSCAN算法为数值型数据提供了基于密度的聚类

七、离群点检测

单变量的离群点检测

通过函数boxplot.stats()实现,函数的返回结果中有一个‘out’的组件存储检测出的离群点

局部离群点因子检测-LOF

识别基于密度的局部离群点算法

缺点是只适用于数值型数据

函数lofactor()使用LOF算法计算局部离群点因子,该函数由DMwR包和dprep包提供

用聚类方法进行离群点检测

将数据进行划分,将那些没有被划分到任何簇的数据点视为离群点

时间序列数据的离群点检测

先使用函数stl()根据稳健回归对时间序列数据进行分解,然后进行离群点检测

基于局部加权的季节性趋势分解算法STL

八、时间序列分析与挖掘

R中的时间序列数据(构造)

时间序列分解

数据集AirPassengers,使用函数decompose()将数据集分解成不同的成分

一些包,如stats包中的stl,timsac包中的decomp函数,以及ast包中的函数tsr

时间序列预测

根据历史数据来预测未来事件,如基于股票过去的形势来预测开盘价

两个常用的时间序列预测模型为自回归移动平均模型ARMA和自回归综合移动平均模型ARIMA

八、时间序列分析与挖掘

时间序列聚类

动态时间规整DTW,找出两个时间序列之间的最优配置,R中的dtw包提供了实现

合成控制图(?)的时间序列数据

基于欧氏距离的层次聚类

基于DTW距离的层次聚类

时间序列分类

特征提取技术有奇异值分解SVD,离散傅里叶变换DFT,离散小波变换DWT,分段积累挖法PAA,连续重要点PIP,分段线性表示,以及符号表示

基于原始数据的分类,party包中的ctree()函数

基于特征提取的分类,离散小波变换(DWT)提取特征,然后建立分类模型,哈尔小波变换和离散傅里叶变换是常用的特征提取技术,,wavelets包用于实现离散小波变换

K-NN分类,找出与新实例最邻近的k个对象,再根据投票机制给该实例打上类标号,使用Arya和Mount’s ANN库

九、关联规则

基本概念

关联规则表示两个项集之间的关联度或相关性,形式为A -> B,常见的度量是支持度、置信度和提升度,公式如下:

九、关联规则

Titanic数据集

包含在datasets包中的4维数据表

关联规则挖掘

一个经典算法是APRIORI,一种广度优先的逐层搜索算法,通过计数找到频繁项集,再从中推导出关联规则,Arulus包中的apriori函数实现

另一个算法是ECLAT算法,不需要计数,依据等价、深度优先搜索和集合交找到频繁项集,Arules包中的eclat()函数实现

在关联规则挖掘中,一个常见的问题是挖掘出来的规则中有很多是没有意义的,调节设置的参数值?

消除冗余

一般来说,当一条规则是另一条规则的超集时,前者和后者的提升值相等,或者前者的提升度更小,被认定为冗余规则

解释规则

关联规则的可视化

常见的有散布图、泡泡图、有向图、平行坐标图,示例可以从CRAN上的arulesViz包中获取

十、文本挖掘

Twitter的文本检索

TwitterR包可以抓取Twitter上的推文(或XML包)

或者使用rdmTweets.Rdata数据集

转换文本

将推文转换为数据框,然后转换为一个语料库

转换函数:tm_map()、asPlainTextDocument()、removeNumbers()、removePunctuation()、removeWords()、stemDocument()以及stripWwitespace()、removeURL()等

十、文本挖掘

提取词干

可以通过snowball词干提取器来完成,需要用到Snowball、Rweka、rJava和Rwekajars包

词干补笔:stemCompletion()函数

建立词项-文档矩阵(tm包?)

TermDocumentMatrix()对语料库建立矩阵

频繁词项与关联

findFreqTerms()找出出现次数不少于10次的频项

findAssocs()找出关联度最高的词项

词云,wordcloud包

词项聚类,推文聚类

方法与第6章聚类类似

使用层次聚类,k-means和k-medoids算法

十一、社交网络分析

igrahp包,第10章中使用的twitter文本

词项网络

推文网络

双模式网络

三个案例

房价指数的分析与预测

客户回复预测与效益最大化

内存受限的大数据预测模型

个人总结

书中列出了R语言和常见数据挖掘结合实例,在每一章后有延伸阅读的材料,给出了相关程序包和一些介绍的材料的下载地址;

使用R语言的优点在于R包数量多,已实现算法的集成,简化开发过程。R语言可以简化实现数据挖掘算法和结果呈现,常用的算法都可以找到R包的支持,结果可视化呈现也是R语言的一大优势;

与大数据结合,因为R语言本身不具备大数据分析功能,可以采用先抽样统计建模、再对进行实际应用部署;另一种思路是借助现有的rhadoop、rhbase等包应用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: