支持向量机分类模型

开始系统学习一下机器学习的一些知识,这个是svm(支持向量机)分类模型。

1.R包和数据

使用了数据iris,用10%作为测试集,90%作为训练集。

if(!require(e1071))install.packages("e1071")
library(e1071)
dat = iris
set.seed(12342)
od = sample(1:nrow(dat),0.9*nrow(dat))
train <- dat[od,]
test <- dat[-od,]
nrow(train)
## [1] 135
nrow(test)
## [1] 15

2.模型构建和预测

model <- svm(Species ~ ., data = train)
fp = predict(model, test[,-5])   
kt = table(fp,test[,5]);kt
##             
## fp           setosa versicolor virginica
##   setosa          4          0         0
##   versicolor      0          5         1
##   virginica       0          0         5
# 看正确率
sum(diag(kt))/sum(kt)
## [1] 0.9333333

这个例子直接用默认参数,正确率已经非常高了,可以不用调优了(当然也可以还是调调)。

3.搜索最优参数

tune.svm函数可以得出误差最小的参数。

cost是惩罚系数,太大导致过拟合,太小导致欠拟合,不直接用默认参数的画,可以用tune.svm找出表现最好的系数。

gamma参数在不同的kernel里用法不同,涉及到了一些细节原理就不看了。

tuned <- tune.svm(Species ~., 
                  data = train, 
                  gamma = 10^(-3:-1), 
                  cost = 10^(-1:1)) 
summary(tuned)
## 
## Parameter tuning of 'svm':
## 
## - sampling method: 10-fold cross validation 
## 
## - best parameters:
##  gamma cost
##    0.1   10
## 
## - best performance: 0.03021978 
## 
## - Detailed performance results:
##   gamma cost      error dispersion
## 1 0.001  0.1 0.65989011 0.21376773
## 2 0.010  0.1 0.50934066 0.20021339
## 3 0.100  0.1 0.12692308 0.07989422
## 4 0.001  1.0 0.51813187 0.17702297
## 5 0.010  1.0 0.11978022 0.08817117
## 6 0.100  1.0 0.03736264 0.03943475
## 7 0.001 10.0 0.11978022 0.08817117
## 8 0.010 10.0 0.04450549 0.03836985
## 9 0.100 10.0 0.03021978 0.03904580

由summary的结果可见,最好的参数是0.1和10。

4.用最优参数重新建模

model  <- svm(Species ~., data = train, gamma=0.1, cost=10) 
fp = predict(model, test[,-5])   
kt = table(fp,test[,5]);kt
##             
## fp           setosa versicolor virginica
##   setosa          4          0         0
##   versicolor      0          5         1
##   virginica       0          0         5
# 看正确率
sum(diag(kt))/sum(kt)
## [1] 0.9333333

调完还是一样的,因为默认参数做出来的模型已经挺好的了。

参考:《零基础学R语言数据分析-从机器学习、数据挖掘、文本挖掘到大数据分析》

你可能感兴趣的:(支持向量机分类模型)