Generarea unui set de date liniar separabil

Support Vector Machines în R

Kailash Awati

Instructor

Prezentare generală a lecției

  • Creăm un set de date pentru a ilustra principiile cheie ale SVM-urilor.
  • Setul de date are două variabile și o limită de decizie liniară.
Support Vector Machines în R

Generarea unui set de date bidimensional cu runif()

  • Generăm un set de date cu două variabile și 200 de puncte
  • Variabilele x1 și x2 sunt uniform distribuite în (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))
Support Vector Machines în R

Crearea a două clase

  • Creăm două clase, separate de limita de decizie x1 = x2
  • Dreapta trece prin (0, 0) și face un unghi de 45 de grade cu orizontala
  • Variabila de clasă y = -1 pentru punctele sub dreaptă și y = 1 pentru cele de deasupra
# Classify points as -1 or +1
df$y <- factor(ifelse(df$x1 - df$x2 > 0, -1, 1),
               levels = c(-1, 1))
Support Vector Machines în R

Vizualizarea setului de date cu ggplot

  • Creăm un grafic scatter 2D cu x1 pe axa x și x2 pe axa y
  • Distingem clasele prin culoare (sub dreaptă = roșu; deasupra = albastru)
  • Limita de decizie este dreapta x1 = x2: trece prin (0, 0) și are pantă = 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
Support Vector Machines în R

Capitolul 1.2 - set de date liniar separabil

Support Vector Machines în R

Introducerea unei margini

  • Pentru a crea o margine, eliminăm punctele apropiate de limită
  • Eliminăm punctele unde valorile x1 și x2 diferă cu mai puțin decât o valoare specificată
# 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
Support Vector Machines în R

Capitolul 1.2 - set de date liniar separabil cu margine

Support Vector Machines în R

Reprezentarea limitelor marginii

  • Limitele marginii sunt:
    • paralele cu limita de decizie (pantă = 1).
    • situate la delta unități de o parte și de alta (delta = 0.05).
p <- p + 
     geom_abline(slope = 1, intercept = delta, linetype = "dashed") +
     geom_abline(slope = 1, intercept = -delta, linetype = "dashed")

p
Support Vector Machines în R

Capitolul 1.2 - set de date liniar separabil cu limite de decizie și margine

Support Vector Machines în R

Timp pentru practică!

Support Vector Machines în R

Preparing Video For Download...