R语言数据挖掘实践——支持向量机的常用函数

R语言数据挖掘实践——支持向量机的常用函数

e1071包是R语言中用于支持向量机建模与分析的软件包,其主要用于支持向量机的模型构建,提供核心函数svm()来建立支持向量机的基础模型,并且可辅助使用predict()函数及fitted()函数来利用所建立模型进行分类。

下载安装相应的软件包,加载后即可使用

>install.packages("e1071")

>library(e1071)

svm()函数

svm()函数是用来建立支持向量机模型的核心函数,它可以用来建立一般情况下的回归模型,也可以用来建立判别分类模型以及密度估计模型。函数svm()基本使用格式有两种。

第一种函数使用格式如下:

svm(formula, data=NULL,...,subset,na.action=na.omit,scale=TRUE)

其中,formula代表函数模型形式,data代表模型中包含的有变量的一组可选格式数据。

第二种函数使用格式如下:

svm(x,y=NULL,scale=TRUE,type=NULL,kernel="radial",degree=3,gamma=if(is.vector(x)) 1 else 1 / ncol(x),

coef0=0,cost=1,nu=0.5, class.weights=NULL,cachesize=40,tolerance=0.001,epsilon=0.1,shrinking=TRUE,

cross=0,probability=FALSE,fitted=TRUE,seed=1L,..., subset,na.action=na.omit)

其中,x可以是一个数据矩阵,也可以是一个数据向量,一个稀疏矩阵。y是对于x数据的结果标签,它既可以是字符向量也可以为数量向量。

type是指建立模型的类别。支持向量机模型通常可以用作分类模型、回归模型或者异常检测模型。type可取的值有:C-classification、nu-classification、one-classification、eps-classification、nu-regression。在这5种类型中,前3种是针对字符型结果变量的分类方式,其中第3种方式是逻辑判别,即判别结果输出所需判别的样本是否属于该类别;而后两种则是针对数量型结果变量的分类方式。

kernel是指在模型建立过程中使用的核函数。支持向量机模型的建模过程中为了解决线性不可分的问题,提高模型预测精度,通常会使用核函数对原始特征进行变换,提高原始特征维度。

svm()函数中的kernel参数有4个可选核函数,分别为线性核函数linear、多项式核函数polynomial()、径向基核函数radial basis()以及神经网络核函数sigmoid()。识别率最高、性能最好地是径向基核函数,其次是多项式核函数,而最差的是神经网络核函数。

核函数有两种主要类型——局部性核函数和全局性核函数,径向基核函数是一个典型的局部性核函数,而多项式核函数则是一个典型的全局性核函数。

我们需要知道的是,局部性核函数仅仅在测试点附近小领域内数据点有影响,其学习能力强、泛化性能较弱;而全局性核函数则相对来说泛化性能较强、学习能力较弱。

在选择所适用的核函数时,我们可以逐一试用并比较结果。取预测结果最好地模型所适用的核函数。

degree参数是指核函数多项式内积函数中的参数,默认值为3。

gamma参数是指核函数中除线性内积函数以外的所有函数的参数,默认值为1。

coef()参数是指核函数中多项式内积函数与sigmoid内积函数中的参数,默认值为0。

nu参数是用于nu-classification、nu-regression和one-classification回归类型中的参数。

下面介绍svm()函数在对数据建立模型后所输出的结果:

  1. SV即support vectors,就是支持向量机中最核心的支持向量;

  2. Index所包含的结果是模型中支持向量在样本数据中的位置,简而言之就是支持向量是样本数据的第几个样本。

值得注意的是,在利用svm()函数建立支持向量机模型时,使用标准化后的数据建立的模型效果更好。

plot函数

将svm()函数所得支持向量机模型放入plot()函数,则可以生成一个来自于根据各个类别和支持向量机建立的支持向量分类模型的输入数据散点图,同时还可以绘制出各个类别的分类图。

plot()函数在应用于svm()输出结果时的基本使用格式如下:

plot(x, data, formula,fill=TRUE,grid=50,slice=list(),symbolPalette=palette(),avSymbol="x",

dataSymbol="o",...)

其中,x是指利用svm()函数所建立的支持向量机模型;data是指绘制支持向量机分类图所采用的数据,该数据格式应与模型建立过程中所使用的数据格式一致;formula参数是用来观察任意两个特征维度对模型分类的相互影响;fill参数为逻辑参数,当为TRUE时,所绘制的图像具有背景色,反之没有,默认值为TRUE;symbolPalette参数主要用于决定分类点以及支持向量的颜色;svSymbol参数主要决定支持向量的形状;dataSymbol参数主要决定数据散点图的形状。


分享到:


相關文章: