支持向量机是帮助我们解决小样本、非线性及高维数据的重要手段。
1 在R语言中,实现支持向量机的是e1071软件包中的svm函数。
首先,安装并加载软件包。
2 读取数据集。
gyyz_data=read.csv("gyyz.csv",head=T)#读取数据集
gyyz_data$is_rise=as.factor(gyyz_data$is_rise)#将目标变量转换成分类数据
head(gyyz_data);dim(gyyz_data)#查看数据维度
str(gyyz_data)#查看数据集中各变量的属性
3 建立向量机的主要函数是SVM(),该函数可以用来建立一般情况下的回归模型,也可以用来建立分类模型、密度估计模型。
svm()函数主要有以下两种形式:
第一种:
svm(formula, data = NULL, ..., subset, na.action =
na.omit, scale = TRUE)
第二种:
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,
..., subset, na.action = na.omit)
其中,第一种函数形式的formula表示公式,一般为y~x1+x2或y~.的形式,data代表数据集。第二种函数形式中的x表示一个特征变量数据集,y表示目标变量;type表示建立模型的类别,主要有C-classification、nu-classification、one-classification(逻辑判别)、eps-regression、nu-regression;kernel表示核函数,主要有线性函数、基核函数、多项式函数、神经网络函数,识别率最高和性能最好的函数是径向基核函数。svm()函数的输出结果中主要包含:SV,即支持向量机;Index表示支持向量样本数据的第几个样本。
建立模型的代码如下:
svm_model=svm(is_rise~.,data=gyyz_data,knernel="radial") #建立svm模型
summary(svm_model)#查看模型输出结果
从结果中可以看出,该模型有48个支持向量,0类和1类分别有24个支持向量。
4 利用建立好的模型进行预测。
svm_pred=predict(svm_model,gyyz_data)
gyyz_data$svm_pred=svm_pred#将预测结果保存到数据集
head(gyyz_data)#查看预测结果
#查看预测效果
table(gyyz_data$is_rise,gyyz_data$svm_pred)#真实值与预测值混淆矩阵
在实际应用中,通过调整函数形式可以优化模型。