Motivare il kernel RBF

Support Vector Machines in R

Kailash Awati

Instructor

Kernel quadratico (parametri predefiniti)

  • Dividi i dati in train/test (non mostrato)
  • Usa kernel polinomiale di grado 2 (parametri predefiniti)
svm_model <- svm(y ~ ., data = trainset, 
                type = "C-classification", 
                kernel = "polynomial", 
                degree = 2)
svm_model
....
Number of Support Vectors:  204
# Predizioni
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.8666667
plot(svm_model, trainset)
Support Vector Machines in R

Capitolo 4.2 - dataset complesso, kernel quadratico predefinito, grafico con svm.plot

Support Vector Machines in R

Prova un polinomio di grado più alto

  • Escludi gradi dispari −3,5,9 ecc.
  • Prova grado 4
svm_model <- svm(y ~ ., data = trainset, 
                type = "C-classification", 
                kernel = "polynomial", 
                degree = 4)
svm_model
...
Number of Support Vectors: 203
# Predizioni
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.8583333
plot(svm_model, trainset)
Support Vector Machines in R

Capitolo 4.2 - dataset complesso, kernel con degree=4 predefinito, grafico con svm.plot

Support Vector Machines in R

Un altro approccio

  • Euristica: punti vicini tendono alla stessa classe:
    • Simile all'algoritmo dei K-Nearest Neighbors.
  • Per un punto del dataset, ad es. X1 = (a, b):
    • Il kernel dovrebbe avere un massimo in (a, b)
    • Dovrebbe decrescere allontanandosi da (a, b)
    • La velocità di decadimento dovrebbe essere uguale in tutte le direzioni
    • La velocità di decadimento dovrebbe essere regolabile
  • Una funzione semplice con questa proprietà è exp(-gamma * r), dove r è la distanza tra X1 e un altro punto X
Support Vector Machines in R

Come varia il kernel RBF con gamma (codice)

#rbf function
rbf <- function(r, gamma) exp(-gamma * r)

ggplot(data.frame(r = c(-0, 10)), aes(r)) + stat_function(fun = rbf, args = list(gamma = 0.2), aes(color = "0.2")) + stat_function(fun = rbf, args = list(gamma = 0.4), aes(color = "0.4")) + stat_function(fun = rbf, args = list(gamma = 0.6), aes(color = "0.6")) + stat_function(fun = rbf, args = list(gamma = 0.8), aes(color = "0.8")) + stat_function(fun = rbf, args = list(gamma = 1), aes(color = "1")) + stat_function(fun = rbf, args = list(gamma = 2), aes(color = "2")) + scale_color_manual("gamma", values = c("red","orange","yellow", "green","blue","violet")) + ggtitle("Radial basis function (gamma = 0.2 to 2)")
Support Vector Machines in R

descrizione immagine

Support Vector Machines in R

Esercitiamoci!

Support Vector Machines in R

Preparing Video For Download...