Générer un ensemble de données linéairement séparable

Machines à vecteurs de support en R

Kailash Awati

Instructor

Aperçu de la leçon

  • Créer un ensemble de données pour illustrer les principes clés des SVM.
  • Deux variables et une frontière de décision linéaire.
Machines à vecteurs de support en R

Générer un ensemble bidimensionnel avec runif()

  • Générer un ensemble à deux variables avec 200 points
  • Variables x1 et x2 distribuées uniformément dans (0,1).
# Préliminaires...
# Nombre de points requis
n <- 200
# Graine pour assurer la reproductibilité
set.seed(42)

# Générer un tableau de données avec deux prédicteurs x1 et x2 dans (0,1) df <- data.frame(x1 = runif(n), x2 = runif(n))
Machines à vecteurs de support en R

Créer deux classes

  • Créer deux classes séparées par la droite de décision x1 = x2
  • La droite passe par (0, 0) et fait un angle de 45 degrés avec l'horizontale
  • Variable de classe y = -1 pour les points sous la droite et y = 1 pour les points au-dessus
# Classer les points en -1 ou +1
df$y <- factor(ifelse(df$x1 - df$x2 > 0, -1, 1),
               levels = c(-1, 1))
Machines à vecteurs de support en R

Visualiser l'ensemble avec ggplot

  • Tracer un nuage de points 2D avec x1 en abscisse et x2 en ordonnée
  • Distinguer les classes par couleur (sous la droite = rouge; au-dessus = bleu)
  • Frontière de décision x1 = x2 : passe par (0, 0) et a une pente = 1
library(ggplot2)

# Construire le graphique
p <- ggplot(data = df, aes(x = x1, y = x2, color = y)) + 
     geom_point() +
     scale_color_manual(values = c("-1" = "red", "1" = "blue")) +
     geom_abline(slope = 1, intercept = 0)

# Afficher  
p
Machines à vecteurs de support en R

Chapitre 1.2 - ensemble linéairement séparable

Machines à vecteurs de support en R

Introduction d'une marge

  • Pour créer une marge, il faut retirer les points près de la frontière
  • Retirer les points dont x1 et x2 diffèrent de moins qu'une valeur donnée
# Créer une marge de 0,05 dans l'ensemble
delta <- 0.05
# Conserver seulement les points à l'extérieur de la marge
df1 <- df[abs(df$x1 - df$x2) > delta, ]
# Vérifier le nombre de points restants
nrow(df1)

# Représenter à nouveau l'ensemble avec la marge (même code qu'avant) p <- ggplot(data = df1, aes(x = x1, y = x2, color = y)) + geom_point() + scale_color_manual(values = c("red", "blue")) + geom_abline(slope = 1, intercept = 0) # Afficher le graphique p
Machines à vecteurs de support en R

Chapitre 1.2 - ensemble linéairement séparable avec marge

Machines à vecteurs de support en R

Tracer les limites de la marge

  • Les limites de la marge sont :
    • parallèles à la frontière de décision (pente = 1).
    • situées à delta de part et d'autre (delta = 0,05).
p <- p + 
     geom_abline(slope = 1, intercept = delta, linetype = "dashed") +
     geom_abline(slope = 1, intercept = -delta, linetype = "dashed")

p
Machines à vecteurs de support en R

Chapitre 1.2 - ensemble linéairement séparable avec frontière et marges

Machines à vecteurs de support en R

Passons à la pratique!

Machines à vecteurs de support en R

Preparing Video For Download...