四时宝库

程序员的知识宝库

R语言数据挖掘实践——判别分析的常用函数

判别算法在R语言中实现主要涉及4个软件包中的相关函数,它们依次为MASS、klaR、class和kknn。其中MASS包含有大量实用而先进的统计计数函数及适用数据集;klaR与class都主要用于分类技术,其中klaR还含有若干用于可视化技术的函数;而kknn中则是基于有权重K最邻近原理的分类、回归及聚类技术的相关函数。

接下来将对上述5中算法的5个核心函数进行详细介绍。

lda()函数

lda()函数式实现线性判别的核心函数,该函数有三种使用格式,在默认情况下,即使用对象为数据框data.frame时,其基本格式为:

lda(x, grouping,prior=proportions, tol=1.0e-4,method,CV=FALSE,nu,...)

另有分别适用于公式formula形式及矩阵matrix形式的两种格式:

lda(formula, data, ..., subset, na.action)

lda(x, griuping, ..., subset, na.action)

下面对这三种函数格式的主要参数进行解说。

x为该函数将要处理的数据框data.frame或数据矩阵matrix;formula则放置用于生成判别规则的工时,以y~x1+x2+x3格式呈现;data和subset都用于以formula为对象的函数格式中,分别用于指明该formula中变量所来自的数据集名称及所纳入规则建立过程的样本;grouping则指明每个观测样本所属类别;prior可设置各类别的先验概率,在无设置的情况下,R语言默认取训练集中各类别样本的比例;tol用于保证判别效果,可通过设置筛选变量,默认取0.0001;na.action用于选择对于缺失值的处理,默认情况下,若有缺失值,则该函数无法运行,当更改设置为na.action时,则自动删除在用于判别的特征变量中含有缺失值的观测样本。

qda()函数

该函数同lda()函数一样,也有着三种分别用于数据框、公式和矩阵对象的函数格式,默认(数据框为对象)格式为:

qda(x, grouping,prior=proportions,method,CV=FALSE,nu,...)

适用于公式及矩阵形式的两种格式分别为:

qda(formula, data, ..., subset, na.action)

qda(x, griuping, ..., subset, na.action)

其中,各格式下的参数与lda()函数完全相同。

NaiveBayes()函数

该函数有两种使用格式,一种为默认情况:

NaiveBayes(x, grouping, prior, usekernel=FALSE, fL=0, ...)

当对象是公式时,则取:

NaiveBayes(formula, data, ..., subset, na.action = na.pass)

该函数的na.action参数与lda()、qda()函数中的有所不同,此处在默认情况下为na.pass,表示不将缺失值纳入计算,并不会导致函数无法运行,当取值为na.omit时则与lda()函数相同,表示删除相应的含有缺失值的观测样本。

另外,usekernel参数用于选择函数计算过程中,密度估计所采用的算法,默认时取FALSE,表示使用标准密度估计,也可通过取值为TRUE,选择使用核密度估计法。

fL用于设置进行拉普拉斯修正(Laplace Correction)的参数值,默认取值为0,即不进行修正,该修正过程在数据量较小的情况下十分必要。这是因为朴素贝叶斯方法的一个致命缺点在于对稀疏数据问题过于敏感,它以各特征变量条件独立为前提,因此使用相乘的方式来计算所需结果,若其中任一项由于数据集中不存在满足条件的样本,使得该项等于0,都会导致整体乘积结果为0,得到无效判别结果。因此,为了解决这个问题,拉普拉斯修正就可以给未出现的特征值,赋予一个较小的值而不是0。

knn()函数

该函数的基本格式如下:

knn(train, test, cl, k=1, l=0, prob=FALSE, use.all = TRUE)

knn()函数默认选择欧氏距离来寻找所需K的最近样本,在可变参数中,train和test参数分别代表训练集和测试集;cl用于放置训练集中各已知类别样本的类别取值;k为控制最近邻域大小的参数,l设置得到确切判别结果所需满足的最少票数。prob控制输出”胜出“类别的得票比例,比如k=10时,若其中有8个属于类别1,2个属于类别2,类别1则为”胜出“类别,且prob取TRUE时,可输出该待判样本所对应的prob值为8/10=0.8;use.all用于选择再出现”结点“时的处理方式,所谓结点即指距离待判样本第K近的已知样本不止一个,比如,已知样本i和j与待判样本n的距离相等,都刚好第K近,那么当use.all默认取TRUE时就将i和j都纳入判别过程,这时n的K近邻就有K+1个样本,若use.all去FALSE,则R预言会在i与j中随机选出一个以保证K近邻中刚好有K个样本。

kknn()函数

该函数的基本格式如下:

kknn(formula=formula(train), train, test, na.action=na.omit(), k=7, distance=2, kernel="optimal", ykernel=NULL, scale=TRUE, contrasts=c(unordered="contr.dump", ordered="contr.ordinal"))

其中,distance参数用于设定选择计算样本间距离的具体方法,通过设定明氏距离(Minkowski Distance)中的参数来实现,去1或2时的明氏距离是最为常用的,参数取2即为欧氏距离,而取1时则为曼哈顿距离,当取无穷时的极限情况下,可以得到切比雪夫距离。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接