Sztuczka jądra

Maszyny wektorów nośnych w R

Kailash Awati

Instructor

Podstawowa idea

  • Opracuj transformację, która sprawi, że problem będzie liniowo separowalny.
  • Zobaczymy, jak to zrobić dla zbioru separowalnego radialnie.
Maszyny wektorów nośnych w R

Rozdział 3.3 – zbiór separowalny radialnie z granicą decyzyjną

Maszyny wektorów nośnych w R

Transformacja problemu

  • Równanie granicy to $x_1 ^ 2 + x_2 ^ 2 = 0.49$
  • Mapuj $x_1 ^ 2$ na nową zmienną $X_1$, a $x_2 ^ 2$ na $X_2$
  • Równanie granicy w przestrzeni $X_1 - X_2$ staje się...
  • $X_1 + X_2 = 0.49$ (prosta!!)
Maszyny wektorów nośnych w R

Wykres w przestrzeni X1-X2 – kod

  • Użyj ggplot(), aby zwizualizować zbiór w przestrzeni $X_1 - X_2$
  • Równanie granicy $X_2 = -X_1 + 0.49$:
    • $slope = -1$
    • $yintercept = 0.49$
p <- ggplot(data = df4, aes(x = x1sq, y = x2sq, color = y)) + 
  geom_point() + 
  scale_color_manual(values = c("red", "blue")) +
  geom_abline(slope = -1, intercept = 0.49)

p
Maszyny wektorów nośnych w R

Rozdział 3.3 – przekształcony zbiór separowalny radialnie z granicą decyzyjną

Maszyny wektorów nośnych w R

Jądro wielomianowe – część 1

  • Jądro wielomianowe: (gamma * (u.v) + coef0) ^ degree
    • degree to stopień wielomianu
    • gamma i coef0 to parametry dostrajania
    • u, v to wektory (punkty danych) należące do zbioru
  • Możemy założyć, że potrzebna jest transformacja 2. stopnia
Maszyny wektorów nośnych w R

Funkcje jądra

  • Formułowanie matematyczne SVM wymaga transformacji o określonych właściwościach.
  • Funkcje spełniające te właściwości nazywane są funkcjami jądra
  • Funkcje jądra są uogólnieniem iloczynów skalarnych
  • Podstawowa idea – użyć jądra, które dobrze separuje dane!
Maszyny wektorów nośnych w R

Zbiór separowalny radialnie – jądro kwadratowe

  • Podział 80/20 na zbiór treningowy i testowy
  • Zbuduj kwadratowe SVM dla zbioru separowalnego radialnie:
    • Ustaw degree = 2
    • Ustaw domyślne wartości cost, gamma i coef0 (1, 1/2 i 0)
svm_model <- svm(y ~ ., data = trainset, type = "C-classification", kernel = "polynomial", degree = 2)
# Predictions
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.9354839
# Visualize model
plot(svm_model, trainset)
Maszyny wektorów nośnych w R

Rozdział 3.3 – zbiór separowalny radialnie, domyślny koszt, jądro kwadratowe, wykres svm.plot

Maszyny wektorów nośnych w R

Czas na ćwiczenia!

Maszyny wektorów nośnych w R

Preparing Video For Download...