Featureauswahl mit zufälligen Wäldern

16

Ich habe einen Datensatz mit hauptsächlich finanziellen Variablen (120 Features, 4k-Beispiele), die größtenteils stark korreliert und sehr verrauscht sind (z. B. technische Indikatoren). Daher möchte ich für die spätere Verwendung beim Modelltraining (binäre Klassifizierung) maximal 20-30 auswählen - erhöhen verringern).

Ich dachte darüber nach, zufällige Wälder für das Feature-Ranking zu verwenden. Ist es eine gute Idee, sie rekursiv zu verwenden? Nehmen wir zum Beispiel an, ich lasse in der ersten Runde die schlechtesten 20% fallen, die zweite auch und so weiter, bis ich die gewünschte Anzahl von Features erhalte. Sollte ich eine Kreuzvalidierung mit RF verwenden? (Es ist für mich intuitiv, keinen Lebenslauf zu verwenden, da RF dies bereits tut.)

Auch wenn ich mit zufälligen Gesamtstrukturen unterwegs bin, sollte ich sie als Klassifizierer für die Binärdatei oder als Regressor für die tatsächliche Zunahme / Abnahme verwenden, um die Wichtigkeit von Features zu ermitteln?

Übrigens sind die Modelle, die ich nach der Featureauswahl ausprobieren möchte: SVM, neuronale Netze, lokal gewichtete Regressionen und zufällige Gesamtstruktur. Ich arbeite hauptsächlich in Python.

Lmao
quelle
2
möchte verbinden, um Erkenntnisse auszutauschen. Ich arbeite an etwas ähnlichem
user670186
Gibt es einen Grund, warum niemand vorgeschlagen hat, das built-inAttribut von RandomForestClassifier in sklearncalled feature_importances_.... zu verwenden? Du wirst es im Link sehen.
Candic3
Vorsicht, da multicollinearitydies die Wichtigkeit von Features und die Auswahl von Features verzerren kann.
schau
Beachten
Tim

Antworten:

12

Für die Merkmalsauswahl benötigen wir eine Bewertungsfunktion sowie eine Suchmethode , um die Bewertungsfunktion zu optimieren.

Sie können RF als Feature-Ranking-Methode verwenden, wenn Sie einen relevanten Wichtigkeitsfaktor definieren. RF wählt Funktionen basierend auf dem Zufallsprinzip mit Ersetzungsmethode aus und gruppiert jede Teilmenge in einem separaten Unterraum (als zufälliger Unterraum bezeichnet). Eine wichtige Bewertungsfunktion könnte auf der Zuweisung der Genauigkeit jedes Baums für jedes Merkmal in diesem zufälligen Unterraum beruhen. Dann machen Sie dies für jeden einzelnen Baum. Da die Quelle für die Erzeugung der Teilräume zufällig ist, können Sie einen Schwellenwert für die Berechnung des Wichtigkeitsfaktors festlegen.

Zusammenfassung:

Schritt 1 : Wenn Merkmal X2 in 25% der Bäume erscheint, bewerten Sie es. Andernfalls sollten Sie nicht in Betracht ziehen, das Feature zu bewerten, da wir nicht über ausreichende Informationen zur Leistung verfügen

Schritt 2 : Weisen Sie nun die Leistungsbewertung jedes Baums zu, in dem X2 angezeigt wird, und mitteln Sie die Bewertung. Zum Beispiel: perf (Tree1) = 0,85 perf (Tree2) = 0,70 perf (Tree3) = 0,30

Dann ist die Wichtigkeit des Merkmals X2 = (0,85 + 0,70 + 0,30) / 3 = 0,6167

Sie können eine erweiterte Einstellung in Betracht ziehen, indem Sie die Teilungstiefe des Features oder den Wert für die Informationsverstärkung in den Entscheidungsbaum aufnehmen. Es gibt viele Möglichkeiten, eine Bewertungsfunktion basierend auf Entscheidungsbäumen und RF zu entwerfen.

In Bezug auf die Suchmethode erscheint Ihre rekursive Methode sinnvoll, um die bestplatzierten auszuwählen.

Schließlich können Sie RF entweder als Klassifikator oder als Regressionsmodell für die Auswahl Ihrer Features verwenden, da beide Ihnen eine Leistungsbewertung liefern würden. Die Bewertung ist indikativ, da sie auf den Out-of-Bag-OOB-Proben basiert und Sie möglicherweise keine Kreuzvalidierung in einer einfacheren Einstellung in Betracht ziehen.

Soufanom
quelle
Danke für die Eingabe. Wollte darauf hinweisen (0.85+0.70+0.30)/3 = 0.6167.
Hendy
5
Wenn Sie mit Python arbeiten, können Sie beim Aufrufen einer zufälligen Gesamtstruktur direkt die in sklearn berechnete Variablenbedeutung verwenden.
Scratch
5

Ich habe einen Datensatz mit hauptsächlich finanziellen Variablen (120 Features, 4k-Beispiele), die größtenteils stark korreliert und sehr verrauscht sind (z. B. technische Indikatoren). Daher möchte ich für die spätere Verwendung beim Modelltraining (binäre Klassifizierung) maximal 20-30 auswählen - erhöhen verringern).

4k-Beispiele reichen nicht aus, um etwas sehr Raffiniertes abzuschätzen - Sie müssen einfachste Modelle (lineare / logistische Regression, lineares SVM) und eine kleine Anzahl von Variablen verwenden

Da Ihre Daten verrauscht und korreliert sind, ist PCA wahrscheinlich die beste Wahl.

Die L2-Regularisierung (für ein lineares Modell) hilft auch dabei, das Rauschen zu mitteln.

seanv507
quelle