Machines à vecteurs de support linéaires

Machines à vecteurs de support en R

Kailash Awati

Instructor

Division en ensembles d'entraînement et de test

  • L'ensemble de données créé au chapitre précédent est dans le dataframe df.
  • Séparer l'ensemble en ensembles d'entraînement et de test
  • Répartition aléatoire 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, ]
    
Machines à vecteurs de support en R

Frontières de décision et noyaux

  • Les frontières de décision peuvent être de formes variées : droites, polynômes ou fonctions plus complexes.
  • Le type de frontière de décision s'appelle un noyau.
  • Le noyau doit être précisé d'emblée.
  • Ce chapitre se concentre sur les noyaux linéaires.
Machines à vecteurs de support en R

SVM avec noyau linéaire

  • Nous utiliserons la fonction svm de la bibliothèque e1071.
  • La fonction a plusieurs paramètres. Nous définirons explicitement :
    • formula : une formule qui précise la variable dépendante, y ici.
    • data : le dataframe contenant les données, soit trainset.
    • type : définir à C-classification (problème de classification).
    • kernel : la forme de la frontière de décision, linéaire ici.
    • cost et gamma : paramètres pour l'ajustement du modèle.
    • scale : booléen indiquant s'il faut normaliser les données.
Machines à vecteurs de support en R

Construire un SVM linéaire

  • Charger la bibliothèque e1071 et appeler la fonction svm()
library(e1071)
svm_model<- svm(y ~ .,
                data = trainset, 
                type = "C-classification", 
                kernel = "linear", 
                scale = FALSE)
Machines à vecteurs de support en R

Aperçu du modèle

  • Afficher svm_model donne :
    • un aperçu du modèle, incluant les types de classification et de noyau
    • les valeurs des paramètres d'ajustement
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
Machines à vecteurs de support en R
# Index of support vectors in training dataset
svm_model$index

# Support vectors svm_model$SV
# Negative intercept (unweighted) svm_model$rho
# Weighting coefficients for support vectors 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
Machines à vecteurs de support en R
  • Obtenir les prédictions de classe pour les ensembles d'entraînement et de test.
  • Évaluer la justesse du modèle sur l'entraînement et le 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
# Parfait !!
Machines à vecteurs de support en R

Passons à la pratique !

Machines à vecteurs de support en R

Preparing Video For Download...