Funktionsauswahlmethoden mit Codebeispielen

Warum Funktionsauswahl?

Bei der Feature-Auswahl werden die nützlichsten Features in einem Dataset gefunden und ausgewählt. Dies ist ein entscheidender Schritt in der Pipeline des maschinellen Lernens. Der Grund, warum wir uns für die Feature-Auswahlmethode interessieren sollten, hat etwas mit den negativen Auswirkungen unnötiger Features in unserem Modell zu tun:

Haupttypen von Tools zur Funktionsauswahl

Im Allgemeinen gibt es drei Arten von Tools zur Funktionsauswahl (obwohl ich nicht weiß, wer sie definiert hat):

Lassen Sie uns nun jede Methode genauer durchgehen.

1 – Filterbasierte Methode

Filtermethoden werden normalerweise als Vorverarbeitungsschritt angewendet.

1.1 – Varianzschwelle

Varianzschwellen entfernen Merkmale, deren Werte sich von Beobachtung zu Beobachtung nicht wesentlich ändern (d. h. ihre Varianz fällt unter einen Schwellenwert). Diese Funktionen bieten wenig Wert. Wir können diese Methode einfach mit den Tools zur Auswahl von sklearn-Funktionen anwenden.

1.2 – Korrelationsschwelle

Korrelationsschwellenwerte entfernen Merkmale, die stark mit anderen korreliert sind (d. h. ihre Werte ändern sich sehr ähnlich zu denen anderer). Diese Funktionen bieten redundante Informationen.

Zuerst berechnen wir alle paarweisen Korrelationen. Wenn die Korrelation zwischen einem Merkmalspaar über einem bestimmten Schwellenwert liegt, entfernen wir dasjenige, das eine größere mittlere absolute Korrelation mit anderen Merkmalen aufweist.

1.3 – Univariate Funktionsauswahl

Die univariate Merkmalsauswahl untersucht jedes Merkmal einzeln, um die Stärke der Beziehung des Merkmals zur Antwortvariablen zu bestimmen. Es gibt viele verschiedene Optionen für die univariate Auswahl.

Eine der einfachsten Methoden zum Verständnis der Beziehung eines Merkmals zur Antwortvariablen ist der Pearson-Korrelationskoeffizient, der die lineare Korrelation zwischen zwei Variablen misst.

Bei dieser Methode berechnen wir die Chi-Quadrat-Metrik zwischen dem Ziel und der numerischen Variablen und wählen nur die gewünschte Anzahl von Variablen mit den besten Chi-Quadrat-Werten aus.

Wenn die Merkmale kategorisch sind, berechnen Sie eine Chi-Quadrat-Statistik (χ2) zwischen jedem Merkmal und dem Zielvektor. Wenn die Merkmale jedoch quantitativ sind, berechnen Sie den ANOVA-F-Wert zwischen jedem Merkmal und dem Zielvektor.

Die F-Wert-Bewertungen untersuchen, ob beim Gruppieren des numerischen Merkmals nach dem Zielvektor die Mittelwerte für jede Gruppe signifikant unterschiedlich sind.

Eine robustere Option für die Korrelationsschätzung ist die gegenseitige Information, die die gegenseitige Abhängigkeit zwischen Variablen misst.

Es kann jedoch aus zwei Gründen unpraktisch sein, direkt für das Feature-Ranking zu verwenden. Erstens ist es keine Metrik und nicht normalisiert (d. H. Liegt nicht in einem festen Bereich), sodass die MI-Werte zwischen zwei Datensätzen nicht vergleichbar sein können. Zweitens kann es unpraktisch sein, für kontinuierliche Variablen zu berechnen: Im Allgemeinen müssen die Variablen durch Binning diskretisiert werden, aber die gegenseitige Informationsbewertung kann sehr empfindlich auf die Auswahl von Bins reagieren.

Der maximale Informationskoeffizient ist eine Technik, die entwickelt wurde, um diese Mängel zu beheben. Es sucht nach einer optimalen Gruppierung und wandelt die Bewertung der gegenseitigen Informationen in eine Metrik um, die im Bereich [0; 1] liegt. In Python ist MIC in der Minepy-Bibliothek verfügbar.

2 – Wrapper-basierte Methode

Wrapper-Methoden basieren auf gierigen Suchalgorithmen, da sie alle möglichen Kombinationen der Merkmale bewerten und die Kombination auswählen, die das beste Ergebnis für einen bestimmten Algorithmus für maschinelles Lernen liefert. Ein Nachteil dieses Ansatzes besteht darin, dass das Testen aller möglichen Kombinationen der Merkmale rechenintensiv sein kann, insbesondere wenn der Merkmalssatz sehr groß ist.

Dies ist eindeutig ein rechenintensiver Ansatz, um die Teilmenge der Merkmale mit der besten Leistung zu finden, da sie den Lernalgorithmus mehrmals aufrufen müssen.

2.1 – Vorwärtssuche

In der ersten Phase der schrittweisen Merkmalsauswahl wird die Leistung des Klassifizierers in Bezug auf jedes Merkmal bewertet. Die Funktion mit der besten Leistung wird aus allen Funktionen ausgewählt.

Im zweiten Schritt wird die erste Funktion in Kombination mit allen anderen Funktionen ausprobiert. Die Kombination von zwei Merkmalen, die die beste Algorithmusleistung erzielen, wird ausgewählt. Der Vorgang wird fortgesetzt, bis die angegebene Anzahl von Features ausgewählt ist.

2.2 – Rückwärtssuche

Die Auswahl von Features für den Rückschritt ist, wie der Name schon sagt, das genaue Gegenteil der Feature-Auswahl für den Schritt vorwärts, die wir im letzten Abschnitt untersucht haben. Im ersten Schritt der schrittweisen Merkmalsauswahl wird ein Merkmal im Round-Robin-Verfahren aus dem Merkmalssatz entfernt und die Leistung des Klassifizierers bewertet.

Der Funktionsumfang, der die beste Leistung erzielt, bleibt erhalten. Im zweiten Schritt wird erneut ein Merkmal im Round-Robin-Verfahren entfernt und die Leistung aller Merkmalskombinationen mit Ausnahme der beiden Merkmale bewertet. Dieser Vorgang wird fortgesetzt, bis die angegebene Anzahl von Features im Dataset verbleibt.

2.3 – Eliminierung rekursiver Features

Es handelt sich um einen gierigen Optimierungsalgorithmus, der darauf abzielt, die Teilmenge der Features mit der besten Leistung zu finden. Es werden wiederholt Modelle erstellt und bei jeder Iteration wird die Funktion mit der besten oder der schlechtesten Leistung außer Acht gelassen. Es wird das nächste Modell mit den linken Features erstellt, bis alle Features erschöpft sind. Anschließend werden die Merkmale anhand der Reihenfolge ihrer Beseitigung eingestuft.

3 – Eingebettete Methode

Eingebettete Methoden verwenden Algorithmen mit integrierten Methoden zur Funktionsauswahl. Zum Beispiel haben Lasso und RF ihre eigenen Merkmalsauswahlmethoden. Der Lasso-Regularisierer erzwingt, dass viele Feature-Gewichte Null sind.

Wir können RandomForest auch verwenden, um Features basierend auf der Feature-Wichtigkeit auszuwählen. Wir hätten auch ein LightGBM verwenden können. Oder ein XGBoost-Objekt, solange es das Attribut feature_importances_ hat.

Referenzen