Motiver le noyau RBF

Machines à vecteurs de support en R

Kailash Awati

Instructor

Noyau quadratique (paramètres par défaut)

  • Séparer les données en test/entraînement (non montré)
  • Utiliser un noyau polynomial de degré 2 (paramètres par défaut)
svm_model <- svm(y ~ ., data = trainset, 
                type = "C-classification", 
                kernel = "polynomial", 
                degree = 2)
svm_model
....
Number of Support Vectors:  204
# Prédictions
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.8666667
plot(svm_model, trainset)
Machines à vecteurs de support en R

Chapitre 4.2 - ensemble complexe, noyau quadratique par défaut, tracé avec svm.plot

Machines à vecteurs de support en R

Essayer un polynôme de degré supérieur

  • Écarter les degrés impairs : 3, 5, 9, etc.
  • Essayer le degré 4
svm_model <- svm(y ~ ., data = trainset, 
                type = "C-classification", 
                kernel = "polynomial", 
                degree = 4)
svm_model
...
Number of Support Vectors: 203
# Prédictions
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.8583333
plot(svm_model, trainset)
Machines à vecteurs de support en R

Chapitre 4.2 - ensemble complexe, noyau degree=4 par défaut, tracé avec svm.plot

Machines à vecteurs de support en R

Une autre approche

  • Heuristique : des points proches ont la même classe :
    • Comparable à l'algorithme des K plus proches voisins.
  • Pour un point donné de l'ensemble, disons X1 = (a, b) :
    • Le noyau doit être maximal en (a, b)
    • Il doit décroître en s'éloignant de (a, b)
    • Le taux de décroissance doit être identique dans toutes les directions
    • Le taux de décroissance doit être réglable
  • Une fonction simple ayant cette propriété est exp(-gamma * r), où r est la distance entre X1 et tout autre point X
Machines à vecteurs de support en R

Variation du noyau RBF selon gamma (code)

# fonction rbf
rbf <- function(r, gamma) exp(-gamma * r)

ggplot(data.frame(r = c(-0, 10)), aes(r)) + stat_function(fun = rbf, args = list(gamma = 0.2), aes(color = "0.2")) + stat_function(fun = rbf, args = list(gamma = 0.4), aes(color = "0.4")) + stat_function(fun = rbf, args = list(gamma = 0.6), aes(color = "0.6")) + stat_function(fun = rbf, args = list(gamma = 0.8), aes(color = "0.8")) + stat_function(fun = rbf, args = list(gamma = 1), aes(color = "1")) + stat_function(fun = rbf, args = list(gamma = 2), aes(color = "2")) + scale_color_manual("gamma", values = c("red","orange","yellow", "green","blue","violet")) + ggtitle("Radial basis function (gamma = 0.2 to 2)")
Machines à vecteurs de support en R

description de l'image

Machines à vecteurs de support en R

Passons à la pratique !

Machines à vecteurs de support en R

Preparing Video For Download...