Funktionsauswahl für Support Vector Machines

9

Meine Frage ist dreifach

Im Kontext von "Kernelized" unterstützen Vektormaschinen

  1. Ist die Auswahl von Variablen / Merkmalen wünschenswert - insbesondere, da wir den Parameter C regulieren, um eine Überanpassung zu verhindern, und das Hauptmotiv für die Einführung von Kerneln in eine SVM darin besteht, die Dimensionalität des Problems zu erhöhen. In einem solchen Fall erscheint die Reduzierung der Dimensionen durch Parameterreduzierung kontraintuitiv
  2. Wenn die Antwort auf die erste Frage "NEIN" lautet, unter welchen Bedingungen würde sich die Antwort ändern, die man beachten sollte?
  3. Gibt es gute Methoden, mit denen versucht wurde, die Funktionsreduzierung für SVMs in der Python-Scikit-Lernbibliothek zu verbessern? Ich habe die SelectFpr-Methode ausprobiert und suche nach Personen mit Erfahrungen mit verschiedenen Methoden.
Nitin Srivastava
quelle
1
Die Auswahl von Funktionen wird immer hilfreich sein, es sei denn, Ihre anfänglichen Funktionen sind von Anfang an von super hoher Qualität. Sklearn bietet viele verschiedene Funktionsauswahlbibliotheken ( scikit-learn.org/stable/modules/feature_selection.html ). Ich bin selbst Teil von RFE.
David
1
Sie haben Ihren Kontext nicht erwähnt. Beachten Sie, dass in einem Geschäftskontext jede im Modell verbleibende Funktion auf einer bestimmten Ebene gewartet werden muss. Wenn Sie mehr Variablen in diesem Sinne haben, fallen buchstäblich Geldkosten an Dies erfordert beispielsweise mehr Datenerfassungsaufwand, DBA-Zeit und Programmierzeit. Diese Überlegung gilt offensichtlich nicht, wenn es sich um eine Kaggle-Komposition oder ähnliches handelt und wenn Sie zusätzliche 200 der verfügbaren Funktionen im Datensatz verwenden, können Sie die Leistung um 0,01% steigern.
Robert de Graaf

Antworten:

3

Persönlich teile ich die Funktionsauswahl gerne in zwei Teile:

  • unbeaufsichtigte Funktionsauswahl
  • überwachte Funktionsauswahl

Unüberwachte Funktionsauswahl sind Dinge wie Clustering oder PCA, bei denen Sie den am wenigsten redundanten Funktionsbereich auswählen (oder Funktionen mit geringer Redundanz erstellen). Überwachte Funktionsauswahl sind Dinge wie Lasso, bei denen Sie die Funktionen mit der größten Vorhersagekraft auswählen.

Ich persönlich bevorzuge normalerweise das, was ich als überwachte Funktionsauswahl bezeichne. Wenn ich also eine lineare Regression verwende, würde ich Features basierend auf Lasso auswählen. Ähnliche Methoden existieren, um in neuronalen Netzen Spärlichkeit zu induzieren.

Aber in der Tat sehe ich nicht, wie ich das in einer Methode mit Kerneln machen würde, also ist es wahrscheinlich besser, wenn Sie das verwenden, was ich als unbeaufsichtigte Funktionsauswahl bezeichne.

EDIT: Sie haben auch nach Regularisierung gefragt. Ich sehe Regularisierung vor allem deshalb als hilfreich an, weil wir mit endlichen Stichproben arbeiten und die Verteilung von Training und Test immer etwas unterschiedlich ist und Sie möchten, dass Ihr Modell nicht überpasst. Ich bin nicht sicher, ob es die Notwendigkeit beseitigt, die Auswahl von Funktionen zu vermeiden (wenn Sie tatsächlich zu viele haben). Ich denke, dass die Auswahl von Features (oder das Erstellen einer kleineren Teilmenge davon) dazu beiträgt, die Features, die Sie haben, robuster zu machen und zu vermeiden, dass das Modell aus falschen Korrelationen lernt. Regularisierung hilft zwar, ist sich aber nicht sicher, ob es sich um eine vollständige Alternative handelt. Aber ich habe nicht gründlich genug darüber nachgedacht.

Ricardo Cruz
quelle