Візуалізація лінійних SVM

Support Vector Machines в R

Kailash Awati

Instructor

  • Побудуйте навчальні дані за допомогою 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
  • Позначте опорні вектори за допомогою index з 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 в R

Розділ 2.2 — лінійно відокремлювані дані, лінійне ядро з типовою вартістю та опорними векторами

Support Vector Machines в R

Знайдіть кутовий коефіцієнт і перетин межі:

  • Побудуйте вектор ваг w з елементів coefs і SV об'єкта svm_model.
# Build weight vector
w <- t(svm_model$coefs) %*% svm_model$SV
  • нахил = -w[1] / w[2]
# Calculate slope and save it to a variable
slope_1 <- -w[1] / w[2]
  • перетин = svm_model$rho / w[2]
# Calculate intercept and save it to a variable
intercept_1 <- svm_model$rho / w[2]
Support Vector Machines в R
  • Додайте лінію розділення з використанням нахилу та перетину, обчислених на попередньому слайді.
  • Скористайтесь geom_abline() для додавання лінії розділення до графіка.
# Plot decision boundary based on calculated slope and intercept
p <- p + geom_abline(slope = slope_1,
                     intercept = intercept_1)
  • Поля паралельні лінії розділення, зміщені на 1 / w[2] по обидва боки.
# 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 в R

Розділ 2.2 — лінійно відокремлювані дані, лінійне ядро з типовою вартістю, опорні вектори, лінія розділення та поля

Support Vector Machines в R

Класифікатори з м'яким полем

  • Дозвольте невизначеність у розташуванні/формі межі
    • Ніколи не ідеально лінійна
    • Зазвичай невідома
  • Наша лінія розділення лінійна, тож поле можна зменшити
Support Vector Machines в R

Візуалізація лінії розділення за допомогою функції svm plot()

  • Функція plot() для svm у e1071 дає простий спосіб візуалізувати лінію розділення.
# Visualize decision boundary using built in plot function
plot(x = svm_model,
     data = trainset)
Support Vector Machines в R

Розділ 2.2 — лінійно відокремлюваний набір даних, лінійне ядро з типовою вартістю, графік за допомогою svm.plot

Support Vector Machines в R

Давайте потренуємось!

Support Vector Machines в R

Preparing Video For Download...