Generování lineárně separovatelného datasetu

Support Vector Machines v R

Kailash Awati

Instructor

Přehled lekce

  • Vytvoříme dataset pro ilustraci klíčových principů SVM.
  • Dataset má dvě proměnné a lineární rozhodovací hranici.
Support Vector Machines v R

Generování dvourozměrného datasetu pomocí runif()

  • Generování dvouproměnného datasetu s 200 body
  • Proměnné x1 a x2 rovnoměrně rozložené v (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 v R

Vytvoření dvou tříd

  • Vytvoření dvou tříd oddělených přímkovou rozhodovací hranicí x1 = x2
  • Přímka prochází bodem (0, 0) a svírá 45° s vodorovnou osou
  • Třídní proměnná y = -1 pro body pod přímkou a y = 1 pro body nad ní
# Classify points as -1 or +1
df$y <- factor(ifelse(df$x1 - df$x2 > 0, -1, 1),
               levels = c(-1, 1))
Support Vector Machines v R

Vizualizace datasetu pomocí ggplot

  • Dvourozměrný bodový graf s x1 na ose x a x2 na ose y
  • Třídy rozlišeny barvou (pod přímkou = červená; nad přímkou = modrá)
  • Rozhodovací hranice je přímka x1 = x2: prochází (0, 0) a má sklon = 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 v R

Kapitola 1.2 – lineárně separovatelný dataset

Support Vector Machines v R

Zavedení marginu

  • Pro vytvoření marginu je nutné odebrat body blízko hranice
  • Odebrat body, kde se hodnoty x1 a x2 liší o méně než zadaná hodnota
# 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 v R

Kapitola 1.2 – lineárně separovatelný dataset s marginem

Support Vector Machines v R

Vykreslení hranic marginu

  • Hranice marginu jsou:
    • rovnoběžné s rozhodovací hranicí (sklon = 1).
    • vzdálené delta jednotek na každé straně (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 v R

Kapitola 1.2 – lineárně separovatelný dataset s rozhodovací hranicí a hranicemi marginu

Support Vector Machines v R

Čas na procvičení!

Support Vector Machines v R

Preparing Video For Download...