Мотивація ядра RBF

Support Vector Machines в R

Kailash Awati

Instructor

Квадратичне ядро (типові параметри)

  • Розбийте дані на train/test (не показано)
  • Використайте поліноміальне ядро ступеня 2 (типові параметри)
svm_model <- svm(y ~ ., data = trainset, 
                type = "C-classification", 
                kernel = "polynomial", 
                degree = 2)
svm_model
....
Number of Support Vectors:  204
# Прогнози
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.8666667
plot(svm_model, trainset)
Support Vector Machines в R

Розділ 4.2 — складний набір даних, квадратичне ядро за замовчуванням, графік через svm.plot

Support Vector Machines в R

Спробуйте поліном вищого степеня

  • Відкиньте непарні степені — 3, 5, 9 тощо
  • Спробуйте степінь 4
svm_model <- svm(y ~ ., data = trainset, 
                type = "C-classification", 
                kernel = "polynomial", 
                degree = 4)
svm_model
...
Number of Support Vectors: 203
# Прогнози
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.8583333
plot(svm_model, trainset)
Support Vector Machines в R

Розділ 4.2 — складний набір даних, ядро degree=4 за замовчуванням, графік через svm.plot

Support Vector Machines в R

Інший підхід

  • Евристика: точки, що близько одна до одної, мають однаковий клас:
    • Подібно до алгоритму K-Nearest Neighbors.
  • Для заданої точки в наборі даних, нехай X1 = (a, b):
    • Ядро має мати максимум у (a, b)
    • Має спадати зі віддаленням від (a, b)
    • Швидкість спаду однакова в усіх напрямах
    • Швидкість спаду має налаштовуватися
  • Проста функція з цією властивістю — exp(-gamma * r), де r — відстань між X1 та будь-якою іншою точкою X
Support Vector Machines в R

Як змінюється ядро RBF зі зміною gamma (код)

# функція rbf
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 в R

опис зображення

Support Vector Machines в R

Час практики!

Support Vector Machines в R

Preparing Video For Download...