Wie erhält man mit SVM eine Variablen- (Attribut-) Wichtigkeit?
Wie erhält man mit SVM eine Variablen- (Attribut-) Wichtigkeit?
Antworten:
Wenn Sie für den Gewichtsvektor eine 1-Strafe verwenden, erfolgt die automatische Merkmalsauswahl, da die den irrelevanten Attributen entsprechenden Gewichte automatisch auf Null gesetzt werden. Siehe dieses Papier . Die (absolute) Größe jeder Nicht-Null-Gewichtung kann eine Vorstellung von der Wichtigkeit des entsprechenden Attributs geben.
Schauen Sie sich auch dieses Dokument an, in dem Kriterien verwendet werden, die von SVMs abgeleitet wurden, um die Attributauswahl zu steuern.
Isabelle Guyon, André Elisseeff, "Eine Einführung in die Auswahl von Variablen und Merkmalen", JMLR, 3 (März): 1157-1182, 2003. http://jmlr.csail.mit.edu/papers/v3/guyon03a.html
ist lesenswert, es wird einen guten Überblick über Ansätze und Themen geben. Die eine Sache, die ich hinzufügen möchte, ist, dass die Merkmalsauswahl nicht unbedingt die Prognoseleistung verbessert und sie leicht verschlechtern kann (da es leicht ist, das Merkmalsauswahlkriterium zu stark anzupassen). Einer der Vorteile von (insbesondere linearen) SVMs besteht darin, dass sie mit einer großen Anzahl von Features gut funktionieren (vorausgesetzt, Sie stimmen den Regularisierungsparameter richtig ab). Daher besteht häufig keine Notwendigkeit, wenn Sie nur an Vorhersagen interessiert sind.
Wenn Sie R verwenden, kann die Variablenbedeutung mit der Wichtigkeitsmethode im rminer-Paket berechnet werden. Dies ist mein Beispielcode:
library(rminer)
M <- fit(y~., data=train, model="svm", kpar=list(sigma=0.10), C=2)
svm.imp <- Importance(M, data=train)
Im Detail finden Sie unter folgendem Link https://cran.r-project.org/web/packages/rminer/rminer.pdf