Máquinas de Vetores de Suporte Lineares

Support Vector Machines em R

Kailash Awati

Instructor

Dividir em treino e teste

  • O conjunto de dados gerado no capítulo anterior está no dataframe df.
  • Separe em conjuntos de treino e teste
  • Divisão aleatória 80/20
    # Definir semente para reprodutibilidade
    set.seed(1)
    # Definir o limite superior de linhas no conjunto de treino
    sample_size <- floor(0.8 * nrow(df))
    # Atribuir linhas a treino/teste aleatoriamente na proporção 80/20
    train <- sample(seq_len(nrow(df)), size = sample_size)
    # Separar conjuntos de treino e teste
    trainset <- df[train, ]
    testset <- df[-train, ]
    
Support Vector Machines em R

Fronteiras de decisão e kernels

  • Fronteiras de decisão podem ter formatos diferentes — linhas, polinômios ou funções mais complexas.
  • O tipo de fronteira de decisão é chamado de kernel.
  • O kernel deve ser definido antes.
  • Este capítulo foca em kernels lineares.
Support Vector Machines em R

SVM com kernel linear

  • Vamos usar a função svm da biblioteca e1071.
  • A função tem vários parâmetros. Vamos definir explicitamente:
    • formula — fórmula que indica a variável dependente; y no nosso caso.
    • data — dataframe com os dados, ou seja, trainset.
    • type — definir como C-classification (problema de classificação).
    • kernel — forma da fronteira de decisão; aqui, linear.
    • cost e gamma — parâmetros para ajustar o modelo.
    • scale — Booleano que indica se os dados serão escalonados.
Support Vector Machines em R

Construindo uma SVM linear

  • Carregue a biblioteca e1071 e chame a função svm()
library(e1071)
svm_model<- svm(y ~ .,
                data = trainset, 
                type = "C-classification", 
                kernel = "linear", 
                scale = FALSE)
Support Vector Machines em R

Visão geral do modelo

  • Exibir svm_model mostra:
    • um panorama do modelo, incluindo tipo de classificação e de kernel
    • valores dos parâmetros de ajuste
svm_model
Call:
svm(formula = y ~ .,
    data = trainset,
    type = "C-classification",
    kernel = "linear", 
    scale = FALSE)

Parameters:
   SVM-Type:  C-classification 
 SVM-Kernel:  linear 
       cost:  1 
      gamma:  0.5

Number of Support Vectors: 55
Support Vector Machines em R
# Índices dos vetores de suporte no conjunto de treino
svm_model$index

# Vetores de suporte svm_model$SV
# Intercepto negativo (não ponderado) svm_model$rho
# Coeficientes de ponderação dos vetores de suporte svm_model$coefs
4   8  10  11  18  37  38  39  47  59  60  74  76  77  78  80  83 ...

x1 x2 5 0.519095949 0.44232464
-0.1087075
[,1] [1,] 1.0000000
Support Vector Machines em R
  • Obtenha previsões de classe para treino e teste.
  • Avalie a acurácia do modelo em treino e teste.
# Acurácia no treino
pred_train <- predict(svm_model, trainset)
mean(pred_train == trainset$y)
1
# Acurácia no teste
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
1
# Perfeito!!
Support Vector Machines em R

Vamos praticar!

Support Vector Machines em R

Preparing Video For Download...