SVM linéaires sur des données radialement séparables

Machines à vecteurs de support en R

Kailash Awati

Instructor

SVM linéaire, cost = 1

  • Fractionner l'ensemble radialement séparable en entraînement/test (seed = 10)
# Construire une SVM linéaire coût par défaut sur l'ensemble d'entraînement

svm_model <- svm(y ~ ., data = trainset, type = "C-classification", kernel = "linear", cost = 1) svm_model
Number of Support Vectors:  126
# Calculer la justesse sur l'ensemble de test

pred_test <- predict(svm_model, testset) mean(pred_test == testset$y)
0.6129032
plot(svm_model, trainset)
Machines à vecteurs de support en R

Chapitre 3.2 - ensemble radialement séparable, noyau linéaire coût par défaut, tracé avec svm.plot

Machines à vecteurs de support en R

SVM linéaire, cost = 100

svm_model <- svm(y ~ ., data = trainset, type = "C-classification", kernel = "linear", cost = 100)
svm_model
Number of Support Vectors:  136
# Justesse
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.6129032
plot(svm_model, trainset)
Machines à vecteurs de support en R

Chapitre 3.2 - ensemble radialement séparable, cost=100 noyau linéaire, tracé avec svm.plot

Machines à vecteurs de support en R

Une meilleure estimation de la justesse

  • Calculer la justesse moyenne sur plusieurs divisions entraînement/test indépendantes.
  • Vérifier l'écart-type pour estimer la variabilité.
Machines à vecteurs de support en R

Justesse moyenne pour une SVM coût par défaut

accuracy <- rep(NA, 100)
set.seed(10)
for (i in 1:100) {
  sample_size <- floor(0.8 * nrow(df))
  train <- sample(seq_len(nrow(df)), size = sample_size)
  trainset <- df[train, ]
  testset <- df[-train, ]
  svm_model<- svm(y ~ ., data = trainset, type = "C-classification", cost = 1, kernel = "linear")
  pred_test <- predict(svm_model, testset)
  accuracy[i] <- mean(pred_test == testset$y)}
mean(accuracy)
sd(accuracy)
0.544
0.04273184
Machines à vecteurs de support en R

Quelle performance pour une SVM linéaire ?

  • À peine mieux qu'un pile ou face !
  • En exploitant notre connaissance de la frontière, on peut faire bien mieux.
Machines à vecteurs de support en R

Passons à la pratique !

Machines à vecteurs de support en R

Preparing Video For Download...