Comment obtenir une importance variable (attribut) en utilisant SVM?
Comment obtenir une importance variable (attribut) en utilisant SVM?
Réponses:
Si vous utilisez une pénalité l-1 sur le vecteur de pondération, la sélection de fonction est automatique car les pondérations correspondant aux attributs non pertinents sont automatiquement définies sur zéro. Voir ce papier . La magnitude (absolue) de chaque poids différent de zéro peut donner une idée de l'importance de l'attribut correspondant.
Regardez également cet article qui utilise des critères dérivés des SVM pour guider la sélection des attributs.
Isabelle Guyon, André Elisseeff, "Introduction à la sélection de variables et de caractéristiques", JMLR, 3 (mars): 1157-1182, 2003. http://jmlr.csail.mit.edu/papers/v3/guyon03a.html
mérite d'être lu, il vous donnera un bon aperçu des approches et des problèmes. J'ajouterais que la sélection des fonctionnalités n'améliore pas nécessairement les performances prédictives et peut facilement aggraver la situation (car il est facile de sur-ajuster le critère de sélection des fonctionnalités). L'un des avantages des SVM (particulièrement linéaires) est qu'ils fonctionnent bien avec un grand nombre de fonctionnalités (à condition que vous régliez correctement le paramètre de régularisation). Il n'est donc souvent pas nécessaire de vous intéresser uniquement à la prédiction.
Si vous utilisez R, l'importance de la variable peut être calculée avec la méthode Importance dans le package rminer. Ceci est mon exemple de code:
library(rminer)
M <- fit(y~., data=train, model="svm", kpar=list(sigma=0.10), C=2)
svm.imp <- Importance(M, data=train)
Dans le détail, reportez - vous au lien suivant https://cran.r-project.org/web/packages/rminer/rminer.pdf