Motywacja jądra RBF

Maszyny wektorów nośnych w R

Kailash Awati

Instructor

Jądro kwadratowe (domyślne parametry)

  • Podział danych na zbiór testowy/treningowy (pominięto)
  • Jądro wielomianowe stopnia 2 (domyślne 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)
Maszyny wektorów nośnych w R

Rozdział 4.2 – złożony zbiór danych, domyślne jądro kwadratowe, wykres z svm.plot

Maszyny wektorów nośnych w R

Próba wielomianu wyższego stopnia

  • Wyklucz nieparzyste stopnie: 3, 5, 9 itd.
  • Wypróbuj stopień 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)
Maszyny wektorów nośnych w R

Rozdział 4.2 – złożony zbiór danych, jądro stopnia 4, wykres z svm.plot

Maszyny wektorów nośnych w R

Inne podejście

  • Heurystyka: punkty blisko siebie mają tę samą klasyfikację:
    • Analogia do algorytmu K-Nearest Neighbors.
  • Dla danego punktu X1 = (a, b):
    • Jądro powinno osiągać maksimum w (a, b)
    • Powinno maleć wraz z oddalaniem się od (a, b)
    • Tempo zaniku powinno być jednakowe we wszystkich kierunkach
    • Tempo zaniku powinno być regulowane
  • Prostą funkcją o tej właściwości jest exp(-gamma * r), gdzie r to odległość między X1 a dowolnym punktem X
Maszyny wektorów nośnych w R

Jak jądro RBF zmienia się w zależności od 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)")
Maszyny wektorów nośnych w R

Wykres funkcji RBF dla różnych wartości gamma

Maszyny wektorów nośnych w R

Czas na ćwiczenia!

Maszyny wektorów nośnych w R

Preparing Video For Download...