Wizualizacja liniowych SVM

Maszyny wektorów nośnych w R

Kailash Awati

Instructor

  • Wizualizacja danych treningowych za pomocą 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
  • Oznaczenie wektorów nośnych za pomocą index z 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
Maszyny wektorów nośnych w R

Rozdział 2.2 – dane liniowo separowalne, domyślny koszt, jądro liniowe z wektorami nośnymi

Maszyny wektorów nośnych w R

Wyznaczanie nachylenia i punktu przecięcia granicy:

  • Budowanie wektora wag w z elementów coefs i SV modelu svm_model.
# Build weight vector
w <- t(svm_model$coefs) %*% svm_model$SV
  • nachylenie =-w[1] / w[2]
# Calculate slope and save it to a variable
slope_1 <- -w[1] / w[2]
  • punkt przecięcia = svm_model$rho / w[2]
# Calculate intercept and save it to a variable
intercept_1 <- svm_model$rho / w[2]
Maszyny wektorów nośnych w R
  • Dodanie granicy decyzyjnej na podstawie nachylenia i punktu przecięcia z poprzedniego slajdu.
  • Użycie geom_abline() w celu dodania granicy decyzyjnej do wykresu.
# Plot decision boundary based on calculated slope and intercept
p <- p + geom_abline(slope = slope_1,
                     intercept = intercept_1)
  • Marginesy równoległe do granicy decyzyjnej, przesunięte o 1 / w[2] po obu jej stronach.
# 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
Maszyny wektorów nośnych w R

Rozdział 2.2 – dane liniowo separowalne, domyślny koszt, jądro liniowe z wektorami nośnymi, granicą decyzyjną i marginesami

Maszyny wektorów nośnych w R

Klasyfikatory z miękkim marginesem

  • Pozwala na niepewność co do lokalizacji / kształtu granicy
    • Nigdy nie jest idealnie liniowa
    • Zazwyczaj nieznana
  • Nasza granica decyzyjna jest liniowa, więc możemy zmniejszyć margines
Maszyny wektorów nośnych w R

Wizualizacja granicy decyzyjnej za pomocą funkcji svm plot()

  • Funkcja plot() w pakiecie e1071 umożliwia łatwe wizualizowanie granicy decyzyjnej.
# Visualize decision boundary using built in plot function
plot(x = svm_model,
     data = trainset)
Maszyny wektorów nośnych w R

Rozdział 2.2 – zbiór danych liniowo separowalny, domyślny koszt, jądro liniowe, wykres za pomocą svm.plot

Maszyny wektorów nośnych w R

Czas na ćwiczenia!

Maszyny wektorów nośnych w R

Preparing Video For Download...