R语言实现支持向量机SVM应用案例_第1页
R语言实现支持向量机SVM应用案例_第2页
R语言实现支持向量机SVM应用案例_第3页
R语言实现支持向量机SVM应用案例_第4页
R语言实现支持向量机SVM应用案例_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第R语言实现支持向量机SVM应用案例setosaversicolorvirginica

通过summary函数可以得到关于模型的相关信息。

其中,SVM-Type项目说明本模型的类别为C分类器模型;SVM-Kernel项目说明本模型所使用的核函数为高斯内积函数且核函数中参数gamma的取值为0.25;cost项目说明本模型确定的约束违反成本为1;此外我们可以看到,模型找到了51个支持向量:第一类包含有8个支持向量,第二类包含有22个支持想想,第三类包含21个支持向量。最后一行说明模型中的三个类别分别为setosa、versicolor和virginica。

第二种使用svm()函数的方式则是根据所给的数据建立模型。这种方式形式要复杂一些,但是它允许我们以一种更加灵活的方式来构建模型。它的函数使用格式如下(注意我们仅列出了其中的主要参数)。

svm(x,y=NULL,scale=TRUE,type=NULL,kernel=radial,

degree=3,gamma=if(is.vector(x))1else1/ncol(x),

coef0=0,cost=1,nu=0.5,subset,na.action=na.omit)

其中:

x可以是一个数据矩阵,也可以是一个数据向量,同时也可以是一个稀疏矩阵。y是对于x数据的结果标签,它既可以是字符向量也可以为数值向量。x和y共同决定了将要用来建模的训练数据以及模型的积分形式。参数type用于指定建立模型的类别。支持向量机模型通常可以用作分类模型、回归模型和异常检查模型。根据用途的不同,在svm函数中的type可取的值为C-classification、nu-classification、one-classification、eps-regression和nu-regression这五种类型。其中前三种是针对于字符结果变量的分类方式,其中第三种方式为逻辑判别,即判别结果输出所需判别样本是否属于该类别。而后两种则是针对数值型结果变量的分类方式。kernel是指在模型的建立过程中使用的核函数。针对线性不可分的问题,为了提高模型预测精度,通常会只用核函数对原始数据进行变换,提高原始特征维度,解决支持向量机模型线性不可分的问题。svm函数中kernel参数有四个可选核函数,分别为线性核函数、多项式核函数、高斯核函数及神经网络核函数。其中,高斯核函数与多项式核函数被认为是性能最好、也是最常用的核函数。

核函数有两种主要类型:局部性核函数和全局性核函数,高斯核函数是一个典型的局部性核函数,而多项式核函数则是一个典型的全局性核函数。局部性核函数仅仅在测试点附近小邻域内对数据点有影响,其学习能力强,泛化性能较弱;而全局性核函数则相对来说泛化性能较强,学习能力较弱。

对于选定的核函数,degree参数是指核函数多项式内积函数中的参数,其默认值为3。gamma参数给出了一个核函数中除线性内积函数以外的所有函数的参数,默认值为1.coef0参数是指核函数中多项式内积函数sigmoid内积函数的中的参数,默认值为0.参数cost是软间隔模型中离群点权重。最后,参数nu是用于nu-regression、nu-classification和one-classification类型中的参数。

一个经验性的结论为,在利用svm函数建立支持向量机模型时,使用标准化后的数据建立的模型效果更好。根据函数的第二种使用格式,在针对上述数据建立模型时,首先应该将结果变量和特征变量分别提取出来。结果向量用一个向量表示,特征向量用一个矩阵表示。在确定好数据后还应根据数据分析所使用的核函数以及核函数所对应的参数值,通常默认使用高斯内积函数作为核函数。下面给出一段实例代码:

#提取iris数据集中除第五列以外的数据作为特征变量

x-iris[,-5]

#提取iris数据集中第五列数据作为结果变量

y-iris[,5]

model3-svm(x,y,kernel=radial,

gamma=if(is.vector(x))1else1/ncol(x))

在使用第二种格式建立模型时,不需要特别强调所建立模型的形式,函数会自动将所有输入的特征变量数据作为建立模型所需要的特征向量。在上述过程中,确定核函数的gamma系数时所使用的代码代表的意思为:如果特征向量是向量则gamma值取1,否则gamma值为特征向量个数的倒数。

在利用样本数据建立模型之后,我们便可以利用模型来进行相应的预测和判别。基于svm函数建立的模型来进行预测时,可以选用函数predict函数来完成相应的工作。在使用该函数时,应该首先确认将要用于预测的样本数据,并将样本数据的特征变量整合后放入同一个矩阵。代码如下:

pred-predict(model3,x)

table(pred,y)

输出结果:

pred-predict(model3,x)

table(pred,y)

y

predsetosaversicolorvirginica

setosa5000

versicolor0482

virginica0248

通常在进行预测之后,还需要检查模型预测的准确程度,这时便需要使用函数table来对预测结果和真实结果做出对比展示。从上述代码的输出中,可以看到在模型预测时,模型将所有属于setosa类型的鸢尾花全部预测正确;模型将数据versicolor类型的鸢尾花中有48朵预测正确,另外两朵错误的预测为virginica类型;同样,模型将属于virginica类型的鸢尾花中的48朵预测正确,但也将另外两朵错误的预测为versicolor类型。

函数predict中的一个可选参数是decision.values,在默认情况下,该参数的缺省值为FALSE。若将其值置为TRUE,那么函数的返回值中将包含有一个名为decision.values的属性,该属性是一个n*c的矩阵。这里,n是被预测的数据量,c是一个二分类器的决策值。注意,因为我们使用支持向量机对样本数据进行分类,分类结果可能是有k个类别。那么这k个类别中任意两类之间都会有一个二分类器。所以,我么可以推断出总共的二分类器数量为K(k-1)/2。决策值矩阵中的列名就是二分类器的标签。代码如下:

pred-predict(model3,x,decision.values=TRUE)

attr(pred,decision.values)[1:4,]

输出如下:

pred-predict(model3,x,decision.values=TRUE)

attr(pred,decision.values)[1:4,]

setosa/versicolorsetosa/virginica

11.1961521.091757

21.0646211.056185

31.1808421.074542

41.1106991.053012

versicolor/virginica

10.6708810

20.8483518

30.6439798

40.6782041

由于我们处理的是一个分类问题。所以分类决策最终是经由一个sign()函数来完成的。从上面的输出中可以看到,对于样本数据4而言,标签setosa/versicolor对应的值大于0,因此属于setosa类;标签setosa/virginica对应的值同样大于0,因此数据setosa类;在二分类器versicolor/virginica中对应的决策值大于0,判定属于versicolor类。所以,最终样本数据4被判定数据setosa类。

可视化模型,代码如下:

plot(cmdscale(dist(iris[,-5])),

+col=c(orange,blue,green)[eger(iris[,5])],

+pch=c(o,+)[1:150%in%model3$index+1])

#legend

legend(1.8,-0.5,c(setosa,versicolor,virgincia),

+col=c(orange,blue,green),lty=1,

+cex=0.6,

+bty=o,box.lty=1,box.col=black)

在图中我们可以看到,鸢尾花中的第一种setosa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论