Trucul nucleului

Support Vector Machines în R

Kailash Awati

Instructor

Ideea de bază

  • Conceperea unei transformări care face problema liniar separabilă.
  • Vom vedea cum se aplică pentru un set de date separabil radial.
Support Vector Machines în R

Capitol 3.3 - set de date separabil radial cu frontieră de decizie

Support Vector Machines în R

Transformarea problemei

  • Ecuația frontierei este $x_1 ^ 2 + x_2 ^ 2 = 0.49$
  • Mapați $x_1 ^ 2$ la variabila nouă $X_1$ și $x_2 ^ 2$ la $X_2$
  • Ecuația frontierei în spațiul $X_1 - X_2$ devine...
  • $X_1 + X_2 = 0.49$ (o linie!!)
Support Vector Machines în R

Grafic în spațiul X1-X2 - cod

  • Utilizați ggplot() pentru a reprezenta setul de date în spațiul $X_1 - X_2$
  • Ecuația frontierei $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 în R

Capitol 3.3 - set de date separabil radial transformat cu frontieră de decizie

Support Vector Machines în R

Nucleul Polinomial - Partea 1

  • Nucleul polinomial: (gamma * (u.v) + coef0) ^ degree
    • degree este gradul polinomului
    • gamma și coef0 sunt parametri de reglaj
    • u, v sunt vectori (puncte de date) din set
  • Putem presupune că avem nevoie de un polinom de gradul 2 (transformare)
Support Vector Machines în R

Funcții nucleu

  • Formularea matematică a SVM necesită transformări cu proprietăți specifice.
  • Funcțiile care satisfac aceste proprietăți se numesc funcții nucleu
  • Funcțiile nucleu sunt generalizări ale produsului scalar vectorial
  • Idee de bază - utilizați un nucleu care separă bine datele!
Support Vector Machines în R

Set de date separabil radial - nucleu cuadratic

  • Împărțire antrenare/test 80/20
  • Construiți un SVM cuadratic pentru setul de date separabil radial:
    • Setați degree = 2
    • Setați valorile implicite pentru 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)
Support Vector Machines în R

Capitol 3.3 - set de date separabil radial, nucleu cuadratic cu cost implicit, reprezentare grafică cu svm.plot

Support Vector Machines în R

Timp pentru practică!

Support Vector Machines în R

Preparing Video For Download...