Kernel-tricket

Support Vector Machines i R

Kailash Awati

Instructor

Grundidén

  • Hitta en transformation som gör problemet linjärt separerbart.
  • Vi ser hur det görs för ett radiellt separerbart dataset.
Support Vector Machines i R

Kapitel 3.3 – radiellt separerbart dataset med beslutsgräns

Support Vector Machines i R

Transformera problemet

  • Gränsens ekvation är $x_1 ^ 2 + x_2 ^ 2 = 0.49$
  • Mappa $x_1 ^ 2$ till en ny variabel $X_1$ och $x_2 ^ 2$ till $X_2$
  • Gränsens ekvation i $X_1 - X_2$-rummet blir...
  • $X_1 + X_2 = 0.49$ (en linje!!)
Support Vector Machines i R

Plottning i X1–X2-rummet – kod

  • Använd ggplot() för att plotta datasetet i $X_1 - X_2$-rummet
  • Gränsens ekvation $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
Support Vector Machines i R

Kapitel 3.3 – transformerat radiellt separerbart dataset med beslutsgräns

Support Vector Machines i R

Polynomialkärnan – del 1

  • Polynomialkärna: (gamma * (u.v) + coef0) ^ degree
    • degree är polynomets grad
    • gamma och coef0 är justeringsparametrar
    • u, v är vektorer (datapunkter) som tillhör datasetet
  • Vi kan anta att vi behöver ett polynom av grad 2 (transformation)
Support Vector Machines i R

Kärnfunktioner

  • Den matematiska formuleringen av SVM:er kräver transformationer med specifika egenskaper.
  • Funktioner som uppfyller dessa egenskaper kallas kärnfunktioner
  • Kärnfunktioner är generaliseringar av vektorers skalärprodukt
  • Grundidén – välj en kärna som separerar data väl!
Support Vector Machines i R

Radiellt separerbart dataset – kvadratisk kärna

  • 80/20-uppdelning träning/test
  • Bygg en kvadratisk SVM för det radiellt separerbara datasetet:
    • Sätt degree = 2
    • Använd standardvärden för cost, gamma och coef0 (1, 1/2 och 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)
Support Vector Machines i R

Kapitel 3.3 – radiellt separerbart dataset, kvadratisk kärna med standardkostnad, plottad med svm.plot

Support Vector Machines i R

Nu kör vi en övning!

Support Vector Machines i R

Preparing Video For Download...