Visualisering av linjära SVM:er

Support Vector Machines i R

Kailash Awati

Instructor

  • Rita träningsdata med ggplot().
# Visualize training data, distinguish classes using color
p <- ggplot(data = trainset, aes(x = x1, y = x2, color = y)) +
     geom_point() +
     scale_color_manual(values = c("red", "blue"))
# Render plot
p
  • Markera stödvektorerna med index från svm_model.
# Identify support vectors
df_sv <- trainset[svm_model$index, ]
# Mark out support vectors in plot
p <- p + geom_point(data = df_sv,
                    aes(x = x1, y = x2),
                    color = "purple",
                    size = 4, alpha = 0.5)
# Display plot
p
Support Vector Machines i R

Kapitel 2.2 – linjärt separerbar data, linjär kärna med standardkostnad och stödvektorer

Support Vector Machines i R

Beräkna lutning och skärningspunkt för gränsen:

  • Bygg viktvektorn w från elementen coefs och SV i svm_model.
# Build weight vector
w <- t(svm_model$coefs) %*% svm_model$SV
  • lutning = -w[1] / w[2]
# Calculate slope and save it to a variable
slope_1 <- -w[1] / w[2]
  • skärningspunkt = svm_model$rho / w[2]
# Calculate intercept and save it to a variable
intercept_1 <- svm_model$rho / w[2]
Support Vector Machines i R
  • Lägg till beslutsgränsen med hjälp av lutning och skärningspunkt från föregående slide.
  • Använd geom_abline() för att rita beslutsgränsen i diagrammet.
# Plot decision boundary based on calculated slope and intercept
p <- p + geom_abline(slope = slope_1,
                     intercept = intercept_1)
  • Marginaler parallella med beslutsgränsen, förskjutna med 1 / w[2] på vardera sida.
# Add margins to plot
p <- p + 
    geom_abline(slope = slope_1,
                intercept = intercept_1 - 1 / w[2],
                linetype = "dashed") + 
    geom_abline(slope = slope_1,
                intercept = intercept_1 + 1 / w[2],
                linetype = "dashed")
# Display plot
p
Support Vector Machines i R

Kapitel 2.2 – linjärt separerbar data, linjär kärna med standardkostnad samt stödvektorer, besluts- och marginalgränser

Support Vector Machines i R

Mjukmarginalsklassificerare

  • Tillåt osäkerhet i gränsens placering och form
    • Aldrig helt linjär
    • Vanligtvis okänd
  • Vår beslutsgräns är linjär, så vi kan minska marginalen
Support Vector Machines i R

Visualisering av beslutsgränsen med svm-funktionen plot()

  • Funktionen plot() för svm i e1071 ger ett enkelt sätt att rita beslutsgränsen.
# Visualize decision boundary using built in plot function
plot(x = svm_model,
     data = trainset)
Support Vector Machines i R

Kapitel 2.2 – linjärt separerbar datamängd, linjär kärna med standardkostnad, diagram med svm.plot

Support Vector Machines i R

Nu kör vi en övning!

Support Vector Machines i R

Preparing Video For Download...