R语言与数据挖掘
上QQ阅读APP看书,第一时间看更新

1.3 R数据分析包

R包主要包含的类别有空间数据分析类、机器学习与统计学习类、多元统计类、药物动力学数据分析类、计量经济类、金融分析类、并行计算类、数据库访问类。每个类别都有相应的R包来实现其功能。比如机器学习与统计学习类别就包含实现分类、聚类、关联规则、时间序列分析等功能的R包。

R在数据挖掘领域也提供了足够的支持,比如分类、聚类、关联规则挖掘等,通过加载不同的R包就能够实现相应的数据挖掘功能,如表1-1所示。

表1-1 R数据挖掘相关包

分类与预测是数据挖掘领域研究的主要问题之一,分类器作为解决问题的工具一直是研究的热点。常用的分类器有神经网络、随机森林、支持向量机、决策树等,这些分类器都有各自的性能特点。

nnet包执行单隐层前馈神经网络,nnet()函数涉及的主要参数有隐层节点数(size)、节点权重(weights)、最大迭代次数(maxit)等,为了达到最好的分类效果,这些都需要用户根据经验或者不断地尝试来确定。随机森林分类器利用基于Breiman随机森林理论的R语言软件包randomForest中的randomForest()函数来实现,需要设置三个主要的参数:森林中决策树的数量(ntree)、内部节点随机选择属性的个数(mtry)及终节点的最小样本数(nodesize)。

支持向量机分类器采用R语言软件包e1071实现,该软件包是以台湾大学林智仁教授的libsvm源代码为基础开发的。svm()函数提供了R与LIBSVM的接口,涉及的参数主要有类型(type,“C”实现支持向量机分类,“eps-regression”实现支持向量机回归)、核函数(kernel)。SVM包含4种主要的核函数:线性核函数(Linear)、多项式核函数(Polynomial)、径向基核函数(RBF)以及Sigmoid核函数。一般情况下会选择径向基核函数,这主要源于:①线性核函数只能处理线性关系,且被证明是径向基核函数的一个特例;②Sigmoid核函数在某些参数上近似径向基核函数的功能,径向基核函数取一定参数也可得到Sigmoid核函数的性能;③多项式核函数参数较多,不易于参数优选。而径向基核函数支持向量机包含两个重要的参数:惩罚参数Cost和核参数Gamma,tune()函数可以为两者进行网格寻优(Grid-search)确定最优值。

常用的聚类方法有系统聚类与K-Means聚类。系统聚类可以使用hclust()函数实现,涉及的参数有距离矩阵(d)和系统聚类方法(method),其中距离矩阵可以使用dist()函数求得,常用的系统聚类方法有最短距离法(single)、最长距离法(complete)、类平均法(average)、中间距离法(median)、重心法(centroid)以及Ward法(ward)。K-Means法是一种快速聚类法,可以使用kmeans()函数实现,涉及的主要参数为聚类数(centers)。

K-Means法和系统聚类法的不同之处在于:系统聚类对不同的类数产生一系列的聚类结果,而K均值法只能产生指定类数的聚类结果。具体类数的确定,离不开实践经验的积累。有时也可借助系统聚类法,以一部分样本为对象进行聚类,其结果作为K均值法确定类数的参考。

作为数据挖掘中的一个独立课题,关联规则用于从大量数据中挖掘出有价值的数据项之间的相关关系,常用的有arules包中的Apriori算法。使用Apriori算法生成规则前,要把数据转换为transcation格式,通过as()转换;其中涉及的参数列表(parameter)用于自定义最小支持度与置信度。

时间序列分析是根据系统观测得到的时间序列数据,通过曲线拟合和参数估计来建立数学模型的理论和方法。进行时间序列分析时,可以使用ts()函数将数据转化成时间序列格式;模型拟合可以通过arima()函数实现,涉及的主要参数有order(自回归项数、滑动平均项数及使时间序列成为平稳序列的差分阶数)、seasonal(序列表现出季节性趋势时需要,除了上述order内容,还有季节周期period)、method(参数估计方法,“CSS”为条件最小二乘法,“ML”为极大似然法)等。R中的auto.arima()函数可以自动生成一个最优拟合模型。