Motivace jádra RBF

Support Vector Machines v R

Kailash Awati

Instructor

Kvadratické jádro (výchozí parametry)

  • Rozdělení dat na testovací/trénovací (nezobrazeno)
  • Polynomiální jádro stupně 2 (výchozí parametry)
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 v R

Kapitola 4.2 – složitá datová sada, výchozí kvadratické jádro, graf pomocí svm.plot

Support Vector Machines v R

Vyzkoušení polynomiálního jádra vyššího stupně

  • Vyloučení lichých stupňů – 3, 5, 9 atd.
  • Vyzkoušení stupně 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 v R

Kapitola 4.2 – složitá datová sada, výchozí jádro stupně 4, graf pomocí svm.plot

Support Vector Machines v R

Jiný přístup

  • Heuristika: blízké body mají stejnou klasifikaci:
    • Podobně jako algoritmus K-nejbližších sousedů.
  • Pro daný bod v datové sadě, např. X1 = (a, b):
    • Jádro by mělo mít maximum v (a, b)
    • Mělo by klesat se vzdáleností od (a, b)
    • Rychlost poklesu by měla být stejná ve všech směrech
    • Rychlost poklesu by měla být nastavitelná
  • Jednoduchá funkce s touto vlastností je exp(-gamma * r), kde r je vzdálenost mezi X1 a libovolným jiným bodem X
Support Vector Machines v R

Jak se jádro RBF mění s gamma (kód)

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

Popis obrázku

Support Vector Machines v R

Čas na procvičení!

Support Vector Machines v R

Preparing Video For Download...