SVM et librairie e1071

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Yann Kieffer
Messages : 3
Enregistré le : 19 Oct 2011, 14:11

SVM et librairie e1071

Messagepar Yann Kieffer » 24 Nov 2011, 11:18

Bonjour,

Je travaille actuellement sur un problème de sélection de variables et de recherche de classifiers optimaux.
J'utilise un algorithme de type "greedy forward selection" avec un modèle SVM a noyau linéaire.
Pour l'instant, j'utilise l'accuracy pour évaluer la performance de mon classifier

ex:

Code : Tout sélectionner

model = svm(Status~.,data=classifier,cross=10,kernel="linear")
score = mean(summary(model)$accuracies)


Je souhaiterais plutôt utiliser l'AUC comme critère de sélection. Pour cela, il faut que je récupère l'index de la fonction SVM afin de pouvoir calculer la courbe ROC.
Est ce que cela est possible avec la librairie e1071?

Merci par avance pour vos réponses.

Yann

Alexis Thieullen
Messages : 128
Enregistré le : 04 Jan 2011, 12:11

Messagepar Alexis Thieullen » 25 Nov 2011, 12:36

Bonjour,

Pourquoi ne pas utiliser directement le package ROCR pour calculer ta courbe ROC ?
(Voir aussi le package caret)
Sinon pour récupérer l'index, tu peux essayer :

Code : Tout sélectionner

data(iris)
model <- svm(Species ~ ., data = iris)
model$index

Yann Kieffer
Messages : 3
Enregistré le : 19 Oct 2011, 14:11

Messagepar Yann Kieffer » 25 Nov 2011, 12:49

J'utilise généralement le package pROC pour tracer les courbes ROC et obtenir l'AUC.
Mon problème est qu'avec la fonction roc(), le predicteur doit etre un vecteur numérique (autrement dit le résultat de ma fonction)

Si la librairie ROCR peut prendre en input directement un objet de type svm, c'est gagné!

Merci en tout cas pour ta réponse

Yann

PS; désolé je n'avais pas vu toute la réponse, tu as du l'éditer entre temps.
Je ne comprends pas trop ce que retourne

Code : Tout sélectionner

 model$index
et a quoi cela correspond

Vincent Guillemot
Messages : 451
Enregistré le : 05 Mai 2010, 15:11

Messagepar Vincent Guillemot » 25 Nov 2011, 13:08

Bonjour,

Je ne sais pas trop ce que tu cherches à récupérer, d'après le contexte, je crois comprendre que ce sont les valeurs après projection sur le ou les hyperplans de classification plutôt que les classes prédites qui sont retournées par défaut par la fonction predict.svm.

Pour récupérer ces valeurs, tu peux peut être essayer ceci:

Code : Tout sélectionner

require(e1071)

data(iris)
x <- subset(iris, select = -Species)
y <- iris$Species
model <- svm(x, y)
# test with train data
pred <- predict(model, x, decision.values = T)
attr(pred,"decision.values")


Bon courage,
Vincent.

Yann Kieffer
Messages : 3
Enregistré le : 19 Oct 2011, 14:11

Messagepar Yann Kieffer » 25 Nov 2011, 14:26

Merci beaucoup Vincent, c'est exactement ce que je cherche a faire.
Il me manquait le "decision.values = T"

Yann


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 0 invité