Variablenauswahlverfahren für die binäre Klassifikation

29

Welche Variablen- / Merkmalsauswahl bevorzugen Sie für die binäre Klassifizierung, wenn der Lernsatz viel mehr Variablen / Merkmale als Beobachtungen enthält? Ziel ist es, zu diskutieren, durch welches Merkmalauswahlverfahren der Klassifizierungsfehler am besten reduziert wird.

Wir können Notationen fix für Konsistenz: für , lassen Sie { x i 1 , ... , x i n i } wird die Lern Reihe von Beobachtungen aus der Gruppe i . So n 0 + n 1 = n ist die Größe des Lernsatzes. Wir setzen p als die Anzahl der Merkmale (dh die Dimension des Merkmalsraums). Sei x [ i ] die i- te Koordinate von xich{0,1}{x1ich,,xnichich}ichn0+n1=npx[ich]ich .xRp

Bitte geben Sie vollständige Referenzen an, wenn Sie die Details nicht angeben können.

BEARBEITEN (kontinuierlich aktualisiert): In den Antworten unten vorgeschlagene Verfahren

Da dies Community-Wiki ist, kann es mehr Diskussionen und Updates geben

Ich habe eine Bemerkung: In gewissem Sinne geben Sie alle eine Prozedur an, die die Reihenfolge der Variablen, aber nicht die Auswahl der Variablen erlaubt (Sie sind bei der Auswahl der Anzahl der Features ziemlich ausweichend, ich vermute, Sie alle verwenden die Kreuzvalidierung?). Können Sie dies verbessern? die antworten in diese richtung? (Da dies Community - Wiki ist, müssen Sie nicht der Antwortschreiber sein, um Informationen zum Auswählen der Anzahl der Variablen hinzuzufügen. Ich habe hier eine Frage in diese Richtung gestellt. Kreuzvalidierung in sehr hoher Dimension (zum Auswählen der Anzahl der Variablen) verwendete Variablen in sehr hochdimensionaler Klassifikation) )

Robin Girard
quelle
Ist es eine Frage oder ein Pool? In letzterem Fall sollte es sich um Community-Wiki handeln. Wenn die erste, geben Sie weitere Details zu dem, was Sie erreichen möchten? Ist es zum Beispiel eine überaus relevante oder eher minimal-optimale Auswahl? Wie viel ist viel? Wie schwer ist das Klassifizierungsproblem?
pool ... many bedeutet 1000 Merkmale oder mehr und weniger als 100 Beobachtungen.
Robin Girard

Antworten:

18

Ein sehr populärer Ansatz ist die bestrafte logistische Regression, bei der man die Summe der log-Wahrscheinlichkeit und eines Bestrafungsterms maximiert, der aus der L1-Norm ("Lasso"), der L2-Norm ("Kamm") und einer Kombination der beiden besteht ("elastisch") oder eine Strafe für Gruppen von Variablen ("Gruppen-Lasso"). Dieser Ansatz hat mehrere Vorteile:

  1. Es hat starke theoretische Eigenschaften, siehe z. B. diesen Aufsatz von Candes & Plan und enge Verbindungen zur komprimierten Abtastung;
  2. Es verfügt über leicht zugängliche Darstellungen, z. B. in Elements of Statistical Learning von Friedman-Hastie-Tibshirani (online verfügbar);
  3. Es hat leicht verfügbare Software, um Modelle zu passen. R hat das glmnet- Paket, das sehr schnell ist und mit ziemlich großen Datenmengen gut funktioniert. Python verfügt über Scikit-Learn , das logistische Regression mit L1- und L2-Bestrafung umfasst.
  4. In der Praxis funktioniert es sehr gut, wie in vielen Anwendungsberichten in den Bereichen Bilderkennung, Signalverarbeitung, Biometrie und Finanzen gezeigt wird.
gappy
quelle
10

Ich bevorzuge Random Forests von Leo Breiman & Adele Cutleer aus mehreren Gründen:

  • es ermöglicht den Umgang mit kategorialen und kontinuierlichen Prädiktoren sowie mit unausgeglichenen Stichprobengrößen;
  • Als Ensemble / Embedded-Methode ist die Kreuzvalidierung eingebettet und ermöglicht die Schätzung eines Generalisierungsfehlers.
  • es ist relativ unempfindlich gegenüber seinen Abstimmungsparametern (% der Variablen, die zum Wachsen eines Baumes ausgewählt wurden, Anzahl der gebauten Bäume);
  • Es bietet ein originelles Maß für die Wichtigkeit von Variablen und ist in der Lage, komplexe Wechselwirkungen zwischen Variablen aufzudecken (obwohl dies zu schwer lesbaren Ergebnissen führen kann).

Einige Autoren argumentierten, dass es SVM- oder Gradient-Boosting-Maschinen nicht nur bestraft, sondern auch bestrafte (siehe z. B. Cutler et al., 2009, zu letzterem Punkt).

Eine vollständige Beschreibung seiner Anwendungen oder Vorteile ist möglicherweise nicht Gegenstand des Themas. Ich empfehle daher die Elemente des statistischen Lernens von Hastie et al. (Kap. 15) und Sayes et al. (2007) für weitere Lesungen.

Last but not least hat es eine schöne Implementierung in R, mit dem randomForest- Paket. Andere R-Pakete erweitern oder verwenden es ebenfalls, z . B. Party und Caret .

Verweise:

Cutler, A., Cutler, DR, und Stevens, JR (2009). Baumbasierte Methoden in der hochdimensionalen Datenanalyse in der Krebsforschung , Li, X. und Xu, R. (Hrsg.), S. 83-101, Springer.

Saeys, Y., Inza, I. und Larrañaga, P. (2007). Ein Überblick über Techniken zur Merkmalsauswahl in der Bioinformatik. Bioinformatics , 23 (19) : 2507 & ndash ; 2517.

chl
quelle
7

Metropolis-Scannen / MCMC

  • Wählen Sie zunächst zufällig einige Merkmale aus, trainieren Sie nur die Klassifizierer auf diesen und erhalten Sie den Fehler.
  • Nehmen Sie an diesem Arbeitssatz eine zufällige Änderung vor - entweder entfernen Sie ein Feature, fügen Sie ein anderes zufällig hinzu oder ersetzen Sie ein Feature durch ein Feature, das gerade nicht verwendet wird.
  • Trainiere den neuen Klassifikator und erhalte seinen Fehler. In dEder Differenz wird der Fehler des neuen Satzes abzüglich des Fehlers des vorherigen Satzes gespeichert .
  • min(1;exp(-beta*dE))Akzeptieren Sie diese Änderung mit größter Wahrscheinlichkeit , lehnen Sie sie ansonsten ab und versuchen Sie es mit einer anderen zufälligen Änderung.
  • Wiederholen Sie dies für eine lange Zeit und geben Sie schließlich den Arbeitssatz zurück, der global den kleinsten Fehler erzielt hat.

Sie können es mit einer klügeren Kontrolle der betaParameter erweitern. Einfacher ist es, simuliertes Tempern zu verwenden, wenn Sie betadie Temperatur im Laufe der Zeit erhöhen (in physikalischer Analogie senken), um Schwankungen zu reduzieren und den Algorithmus auf ein Minimum zu reduzieren. Es ist schwieriger, den Austausch von Replikaten zu verwenden .

user88
quelle
5

Wenn Sie nur an der Generalisierungsleistung interessiert sind, ist es wahrscheinlich besser, keine Feature-Auswahl vorzunehmen und stattdessen Regularisierung zu verwenden (z. B. Ridge-Regression). In der Community des maschinellen Lernens gab es mehrere offene Herausforderungen bei der Featureauswahl, und Methoden, die auf Regularisierung und nicht auf Featureauswahl beruhen, weisen im Allgemeinen mindestens die gleiche Leistung auf, wenn nicht sogar eine bessere.

Dikran Beuteltier
quelle
3

Gierige Vorauswahl.

Die Schritte für diese Methode sind:

  • Stellen Sie sicher, dass Sie einen Zug und ein Validierungsset haben
  • Wiederholen Sie das Folgende
    • Trainieren Sie einen Klassifikator mit jedem einzelnen Feature, das noch nicht ausgewählt ist, und mit allen zuvor ausgewählten Features
    • Wenn sich das Ergebnis verbessert, fügen Sie die Funktion mit der besten Leistung hinzu, andernfalls beenden Sie den Vorgang
Peter Smit
quelle
Wie "trainieren" Sie Ihren Klassifikator? Vermutlich erfolgt dies am Trainingsset. Wenn es sich um eine Support Vector Machine (SVM) handelt, müssen Sie während des Trainings verschiedene Parameter ausprobieren. Wird jeder anhand des Validierungssatzes (Testsatzes) getestet? Oder verwenden Sie die k-fache Kreuzvalidierung? Wie oft verwenden Sie das Validierungs- (Test-) Set, um Ihre Leistung zu überprüfen - vermutlich ist dies die Genauigkeit. Es tut mir leid, pedantisch zu sein, aber dies ist eine schlecht definierte Antwort und es besteht die Gefahr einer Überanpassung.
Thylacoleo
@Thylacoleo Dies ist eine sehr grobe, grundlegende und gierige Methode. Häufig behalten Sie die gleichen Überläufe bei, aber alles, was Sie möchten, ist in Ordnung.
Peter Smit
2

Eliminierung rückwärts.

Beginnen Sie mit dem vollständigen Satz, trainieren Sie den Klassifizierer dann iterativ mit den verbleibenden Merkmalen und entfernen Sie das Merkmal mit der geringsten Wichtigkeit. Halten Sie an, wenn der Klassifiziererfehler schnell zunimmt / unannehmbar hoch wird.

Die Wichtigkeit kann sogar dadurch erreicht werden, dass jedes Merkmal iterativ entfernt und die Fehlererhöhung überprüft oder aus dem Klassifikator angepasst wird, wenn es erzeugt wird (wie im Fall von Random Forest).

user88
quelle
2
Die Frage besagt jedoch, dass es mehr Variablen als Beobachtungen gibt. Es ist also nicht möglich, mit dem vollständigen Satz zu beginnen.
Rob Hyndman
Was ist das Problem?
2
Sie können kein Modell anpassen, das mehr Variablen als Beobachtungen enthält. Es gibt nicht genügend Freiheitsgrade für die Parameterschätzung.
Rob Hyndman
1
In Fishers F Berechnung, berechnen Sie die F wie (n - k - p) / (k - 1) * ...mit nder Anzahl der Beobachtungen, kdie Anzahl der Klassen (2 hier) und pder Anzahl der Variablen. n - 2 - p < 0wann n < p + 2(was hier der Fall ist) was dazu führt F < 0. Wäre das nicht ein Problem?
Matthieu
3
Eine regulierte oder vollständig bayesianische Regression würde es ermöglichen, zunächst eine einzigartige Lösung mit allen Prädiktoren zu erhalten - zweifellos dasselbe gilt für einige andere ML-Techniken.
Scortchi