Motivando o kernel RBF

Support Vector Machines em R

Kailash Awati

Instructor

Kernel quadrático (parâmetros padrão)

  • Dividir dados em treino/teste (não mostrado)
  • Usar kernel polinomial de grau 2 (parâmetros padrão)
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 em R

Capítulo 4.2 - conjunto de dados complexo, kernel quadrático padrão, gráfico com svm.plot

Support Vector Machines em R

Testar polinômio de grau mais alto

  • Descartar graus ímpares - 3,5,9 etc.
  • Tentar grau 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 em R

Capítulo 4.2 - conjunto de dados complexo, kernel com grau=4 padrão, gráfico com svm.plot

Support Vector Machines em R

Outra abordagem

  • Heurística: pontos próximos tendem a ter a mesma classe:
    • Semelhante ao algoritmo K-Nearest Neighbors.
  • Para um ponto do conjunto de dados, digamos X1 = (a, b):
    • O kernel deve ter máximo em (a, b)
    • Deve decair ao se afastar de (a, b)
    • A taxa de decaimento deve ser igual em todas as direções
    • A taxa de decaimento deve ser ajustável
  • Uma função simples com essa propriedade é exp(-gamma * r), onde r é a distância entre X1 e qualquer outro ponto X
Support Vector Machines em R

Como o kernel RBF varia com gamma (código)

#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("Função de base radial (gamma = 0.2 a 2)")
Support Vector Machines em R

descrição da imagem

Support Vector Machines em R

Hora de praticar!

Support Vector Machines em R

Preparing Video For Download...