Motivera RBF-kärnan

Support Vector Machines i R

Kailash Awati

Instructor

Kvadratisk kärna (standardparametrar)

  • Dela data i test/träning (visas ej)
  • Använd polynomkärna av grad 2 (standardparametrar)
svm_model <- svm(y ~ ., data = trainset, 
                type = "C-classification", 
                kernel = "polynomial", 
                degree = 2)
svm_model
....
Number of Support Vectors:  204
# Predictions
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.8666667
plot(svm_model, trainset)
Support Vector Machines i R

Kapitel 4.2 – komplext dataset, kvadratisk standardkärna, graf med svm.plot

Support Vector Machines i R

Prova högre polynomgrad

  • Uteslut udda grader – 3, 5, 9 osv.
  • Prova grad 4
svm_model <- svm(y ~ ., data = trainset, 
                type = "C-classification", 
                kernel = "polynomial", 
                degree = 4)
svm_model
...
Number of Support Vectors: 203
# Predictions
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.8583333
plot(svm_model, trainset)
Support Vector Machines i R

Kapitel 4.2 – komplext dataset, standardkärna med grad 4, graf med svm.plot

Support Vector Machines i R

Ett annat angreppssätt

  • Heuristik: punkter nära varandra tillhör samma klass:
    • Liknar K-närmaste-grannar-algoritmen.
  • För en given punkt i datamängden, t.ex. X1 = (a, b):
    • Kärnan ska ha ett maximum i (a, b)
    • Ska avta när man rör sig bort från (a, b)
    • Avtagstakten ska vara densamma i alla riktningar
    • Avtagstakten ska vara justerbar
  • En enkel funktion med denna egenskap är exp(-gamma * r), där r är avståndet mellan X1 och en annan punkt X
Support Vector Machines i R

Hur varierar RBF-kärnan med gamma (kod)

#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 i R

bildbeskrivning

Support Vector Machines i R

Nu kör vi en övning!

Support Vector Machines i R

Preparing Video For Download...