SVM lineari

Support Vector Machines in R

Kailash Awati

Instructor

Dividi in training e test

  • L'insieme di dati generato nel capitolo precedente è nel dataframe df.
  • Dividi l'insieme di dati in training e test
  • Suddivisione casuale 80/20
    # Set seed for reproducibility
    set.seed(1)
    # Set the upper bound for the number of rows to be in the training set
    sample_size <- floor(0.8 * nrow(df))
    # Assign rows to training/test sets randomly in 80/20 proportion
    train <- sample(seq_len(nrow(df)), size = sample_size)
    # Separate training and test sets
    trainset <- df[train, ]
    testset <- df[-train, ]
    
Support Vector Machines in R

Confini di decisione e kernel

  • I confini di decisione possono avere forme diverse: linee, polinomi o funzioni più complesse.
  • Il tipo di confine di decisione si chiama kernel.
  • Il kernel va specificato in anticipo.
  • In questo capitolo ci concentriamo sui kernel lineari.
Support Vector Machines in R

SVM con kernel lineare

  • Useremo la funzione svm della libreria e1071.
  • La funzione ha vari parametri. Imposteremo esplicitamente i seguenti:
    • formula - una formula che specifica la variabile dipendente, y nel nostro caso.
    • data - il dataframe con i dati, cioè trainset.
    • type - impostato a C-classification (problema di classificazione).
    • kernel - la forma del confine di decisione, lineare in questo caso.
    • cost e gamma - parametri per il tuning del modello.
    • scale - booleano che indica se scalare i dati.
Support Vector Machines in R

Costruire una SVM lineare

  • Carica la libreria e1071 e richiama la funzione svm()
library(e1071)
svm_model<- svm(y ~ .,
                data = trainset, 
                type = "C-classification", 
                kernel = "linear", 
                scale = FALSE)
Support Vector Machines in R

Panoramica del modello

  • Stampando svm_model ottieni:
    • una panoramica del modello, inclusi tipo di classificazione e kernel
    • valori dei parametri di tuning
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 in R
# Indici dei support vector nel training set
svm_model$index

# Support vector svm_model$SV
# Intercetta negativa (non pesata) svm_model$rho
# Coefficienti di pesatura per i support vector 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 in R
  • Ottieni le predizioni di classe per training e test.
  • Valuta l'accuratezza del modello su training e test.
# Training accuracy
pred_train <- predict(svm_model, trainset)
mean(pred_train == trainset$y)
1
# Test accuracy
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
1
# Perfetto!!
Support Vector Machines in R

Esercitiamoci!

Support Vector Machines in R

Preparing Video For Download...