SVMs

Support vector machines (SVMs) are supervised learning models with associated learning algorithms that analyze data and recognize patterns, used for classification and regression analysis.

# install.packages('ISLR')
library('ISLR')
print(head(iris))
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
# install.packages('e1071')
library(e1071)

# help('svm')
# create a support vector machine model

model <- svm(Species ~., data = iris)

summary(model)
## 
## Call:
## svm(formula = Species ~ ., data = iris)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  radial 
##        cost:  1 
##       gamma:  0.25 
## 
## Number of Support Vectors:  51
## 
##  ( 8 22 21 )
## 
## 
## Number of Classes:  3 
## 
## Levels: 
##  setosa versicolor virginica
# you should train your model first, then predict, but we are training our data next chunk
pred.values <- predict(model, iris[1:4])
table(pred.values, iris[,5])
##             
## pred.values  setosa versicolor virginica
##   setosa         50          0         0
##   versicolor      0         48         2
##   virginica       0          2        48
# summary(model)
tune.results <- tune(svm, train.x = iris[1:4], train.y =iris[,5], kernel= 'radial',,ranges = list(cost=c(0.5, 1, 1.5), gamma = c(0.1, 0.5, 0.7)))
summary(tune.results)
## 
## Parameter tuning of 'svm':
## 
## - sampling method: 10-fold cross validation 
## 
## - best parameters:
##  cost gamma
##   1.5   0.1
## 
## - best performance: 0.03333333 
## 
## - Detailed performance results:
##   cost gamma      error dispersion
## 1  0.5   0.1 0.04000000 0.07166451
## 2  1.0   0.1 0.04000000 0.06440612
## 3  1.5   0.1 0.03333333 0.04714045
## 4  0.5   0.5 0.04666667 0.07062333
## 5  1.0   0.5 0.04666667 0.06324555
## 6  1.5   0.5 0.04666667 0.06324555
## 7  0.5   0.7 0.05333333 0.07568616
## 8  1.0   0.7 0.05333333 0.07568616
## 9  1.5   0.7 0.05333333 0.07568616
# cost = 1.5
# Gamma = 0.1

tune.svm <- svm(Species ~., data = iris, kernel= 'radial', cost = 1.5, gamma = 0.1)

summary(tune.svm)
## 
## Call:
## svm(formula = Species ~ ., data = iris, kernel = "radial", cost = 1.5, 
##     gamma = 0.1)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  radial 
##        cost:  1.5 
##       gamma:  0.1 
## 
## Number of Support Vectors:  50
## 
##  ( 4 23 23 )
## 
## 
## Number of Classes:  3 
## 
## Levels: 
##  setosa versicolor virginica