Générer un jeu 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 jeu 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 jeu de données 2D avec runif()

  • Générer un jeu de données à deux variables avec 200 points
  • Variables x1 et x2 uniformément réparties dans (0,1).
# Preliminaries...
# Set required number of data points
n <- 200
# Set seed to ensure reproducibility
set.seed(42)

# Generate dataframe with two predictors x1 and x2 in (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 frontière de décision x1 = x2
  • Droite passant par (0, 0) et faisant un angle de 45° avec l'horizontale
  • Variable de classe y = -1 pour les points sous la droite et y = 1 pour ceux au-dessus
# Classify points as -1 or +1
df$y <- factor(ifelse(df$x1 - df$x2 > 0, -1, 1),
               levels = c(-1, 1))
Machines à vecteurs de support en R

Visualiser le jeu de données avec ggplot

  • Créer 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)
  • La frontière est la droite x1 = x2 : passe par (0, 0) et a une pente = 1
library(ggplot2)

# Build plot
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)

# Display it  
p
Machines à vecteurs de support en R

Chapitre 1.2 - jeu de données linéairement séparable

Machines à vecteurs de support en R

Introduire une marge

  • Pour créer une marge, il faut retirer les points proches de la frontière
  • Retirer les points dont x1 et x2 diffèrent de moins qu'une valeur donnée
# Create a margin of 0.05 in dataset
delta <- 0.05
# Retain only those points that lie outside the margin
df1 <- df[abs(df$x1 - df$x2) > delta, ]
# Check number of data points remaining
nrow(df1)

# Replot dataset with margin (code is exactly same as before) 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) # Display plot p
Machines à vecteurs de support en R

Chapitre 1.2 - jeu de données 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).
    • à delta unités 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 - jeu de données 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...