Ajustando SVMs

Support Vector Machines em R

Kailash Awati

Instructor

Objetivo do ajuste

  • Difícil encontrar manualmente valores ideais de parâmetros para kernels complexos.
  • Objetivo: achar o melhor conjunto de parâmetros usando a função tune.svm().
Support Vector Machines em R

Ajuste em poucas palavras

  • Como funciona:
    • defina um intervalo de busca para cada parâmetro. Exemplos: cost = 10^(-1:3), gamma = c(0.1,1,10), coef0 = c(0.1,1,10)
    • Construa um modelo SVM para cada combinação possível e avalie a acurácia.
    • Retorne a combinação que gera a melhor acurácia.
  • Procedimento computacionalmente intenso!
Support Vector Machines em R
  • Ajustar o SVM para o conjunto radialmente separável criado antes
    • Kernel polinomial foi construído na lição anterior
    • A acurácia do SVM foi ~94%.
  • Dá para melhorar ajustando gamma, cost e coef0?
tune_out <- tune.svm(x = trainset[,-3], y = trainset[,3], 
                     type = "C-classification", kernel = "polynomial", degree = 2,
                     cost = 10^(-1:2), gamma = c(0.1,1,10), coef0 = c(0.1,1,10))

#print out tuned parameters tune_out$best.parameters$cost tune_out$best.parameters$gamma tune_out$best.parameters$coef0
0.1
10
1
Support Vector Machines em R
  • Construa o modelo SVM usando os melhores valores do tune.svm().
svm_model <- svm(y ~ ., data = trainset, type = "C-classification", kernel = "polynomial", degree = 2,
        cost = tune_out$best.parameters$cost,
        gamma = tune_out$best.parameters$gamma,
        coef0 = tune_out$best.parameters$coef0)
  • avalie a acurácia de treino e teste
pred_train <- predict(svm_model, trainset)
mean(pred_train == trainset$y)
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
1

0.9677419
#plot using svm plot
plot(svm_model, trainset)
Support Vector Machines em R

Capítulo 3.4 - conjunto radialmente separável, kernel quadrático ajustado, gráfico com svm.plot

Support Vector Machines em R

Vamos praticar!

Support Vector Machines em R

Preparing Video For Download...