Ich verwende derzeit XGBoost für einen Datensatz mit 21 Features (ausgewählt aus einer Liste von ca. 150 Features). Anschließend werden diese per One-Hot-Code codiert, um ~ 98 Features zu erhalten. Einige dieser 98 Features sind etwas redundant, zum Beispiel: Eine Variable (Feature) auch als B angezeigt undC .
Meine Fragen sind:
- Wie ( wenn? ) Gehen Boosted Decision Trees mit Multikollinearität um?
- Wie würde sich die Existenz von Multikollinearität auf die Vorhersage auswirken, wenn sie nicht behandelt wird?
Soweit ich weiß, lernt das Modell mehr als einen Baum und die endgültige Vorhersage basiert auf so etwas wie einer "gewichteten Summe" der einzelnen Vorhersagen. Wenn dies korrekt ist, sollten Boosted Decision Trees in der Lage sein, die Abhängigkeit zwischen Variablen zu bewältigen.
Außerdem: Wie funktioniert das Objekt mit variabler Wichtigkeit in XGBoost?
feature-selection
correlation
xgboost
gbm
user140323
quelle
quelle
Antworten:
Entscheidungsbäume sind von Natur aus immun gegen Multikollinearität. Wenn Sie beispielsweise 2 Features haben, die zu 99% korreliert sind, wählt der Baum bei der Entscheidung für eine Aufteilung nur eines davon aus. Andere Modelle wie die logistische Regression würden beide Funktionen nutzen.
Da geboostete Bäume einzelne Entscheidungsbäume verwenden, sind sie auch nicht von Multikollinearität betroffen. Unabhängig vom Algorithmus des Modells empfiehlt es sich jedoch, redundante Features aus allen für das Training verwendeten Datensätzen zu entfernen. In Ihrem Fall können Sie, da Sie neue Features ableiten, diesen Ansatz verwenden, die Wichtigkeit jedes Features bewerten und nur die besten Features für Ihr endgültiges Modell beibehalten.
Die Wichtigkeitsmatrix eines xgboost-Modells ist eigentlich ein data.table-Objekt. In der ersten Spalte sind die Namen aller Features aufgeführt, die tatsächlich in den verstärkten Bäumen verwendet werden. Die zweite Spalte ist die Gain-Metrik, die den relativen Beitrag des entsprechenden Features zum Modell impliziert, der berechnet wird, indem der Beitrag jedes Features für jeden Baum im Modell genommen wird. Ein höherer Wert dieser Metrik im Vergleich zu einem anderen Feature bedeutet, dass es für die Erstellung einer Vorhersage wichtiger ist.
quelle
Ich war neugierig und machte ein paar Tests.
Ich habe ein Modell für den Diamanten-Datensatz trainiert und festgestellt, dass die Variable „x“ am wichtigsten ist, um vorherzusagen, ob der Preis eines Diamanten einen bestimmten Schwellenwert überschreitet. Dann habe ich mehrere Spalten hinzugefügt, die in hohem Maße mit x korreliert sind, dasselbe Modell ausgeführt und dieselben Werte beobachtet.
Wenn die Korrelation zwischen zwei Spalten 1 ist, entfernt xgboost anscheinend die zusätzliche Spalte, bevor das Modell berechnet wird, sodass die Wichtigkeit nicht beeinträchtigt wird. Wenn Sie jedoch eine Spalte hinzufügen, die teilweise mit einer anderen korreliert ist, also einen niedrigeren Koeffizienten aufweist, wird die Bedeutung der ursprünglichen Variablen x verringert.
Wenn ich zum Beispiel eine Variable xy = x + y hinzufüge, nimmt die Wichtigkeit von x und y ab. In ähnlicher Weise nimmt die Bedeutung von x ab, wenn ich neue Variablen mit r = 0,4, 0,5 oder 0,6 hinzufüge, allerdings nur um ein wenig.
Ich denke, dass Kollinearität kein Problem für das Boosten ist, wenn Sie die Genauigkeit des Modells berechnen, da es dem Entscheidungsbaum egal ist, welche der Variablen verwendet wird. Dies kann sich jedoch auf die Wichtigkeit der Variablen auswirken, da das Entfernen einer der beiden korrelierten Variablen keinen großen Einfluss auf die Genauigkeit des Modells hat, da die andere ähnliche Informationen enthält.
Bewerten Sie ein Modell anhand der Diamantdaten
Wir sagen voraus, ob der Preis bei allen verfügbaren numerischen Variablen (Karat, Tiefe, Tabelle, x, y, x) höher als 400 ist.
Beachten Sie, dass x die wichtigste Variable mit einer Wichtigkeitszunahme von 0,375954 ist.
Auf Diamonds trainiertes Modell, das eine Variable mit r = 1 zu x hinzufügt
Hier fügen wir eine neue Spalte hinzu, die jedoch keine neuen Informationen hinzufügt, da sie perfekt mit x korreliert sind.
Beachten Sie, dass diese neue Variable in der Ausgabe nicht vorhanden ist. Es scheint, dass xgboost perfekt korrelierte Variablen automatisch entfernt, bevor die Berechnung gestartet wird. Der Wichtigkeitsgewinn von x ist der gleiche, 0,3759.
Modell auf Diamanten trainiert, Hinzufügen einer Spalte für x + y
Wir fügen eine neue Spalte xy = x + y hinzu. Dies ist teilweise sowohl mit x als auch mit y korreliert.
Beachten Sie, dass die Wichtigkeit von x und y leicht verringert ist und von 0,3759 auf 0,3592 für x und von 0,116 auf 0,079 für y steigt.
Auf Diamonds-Daten trainiertes Modell, modifiziert durch Hinzufügen redundanter Spalten
Wir fügen drei neue Spalten hinzu, die mit x korreliert sind (r = 0,4, 0,5 und 0,6) und sehen, was passiert.
Beachten Sie, dass die Bedeutung von x von 0,3759 auf 0,279 sinkt.
quelle
Es gibt eine Antwort von Tianqi Chen (2018).
Zusammenfassend lässt sich sagen, dass Xgboost die korrelierten Merkmale in den einzelnen Bäumen nicht zufällig verwendet. Dieses zufällige Waldmodell leidet unter einer solchen Situation.
Hinweis :
Tianqi Chen, Michaël Benesty, Tong He. 2018. „Verstehen Sie Ihren Datensatz mit Xgboost.“ Https://cran.r-project.org/web/packages/xgboost/vignettes/discoverYourData.html#numeric-vs-categorical-variables .
quelle
Eine Bemerkung zu Sandeeps Antwort: Angenommen, 2 Ihrer Features sind stark kolinear (sagen wir 99% der Zeit). Tatsächlich wird bei jeder Aufteilung nur 1 Feature ausgewählt, aber für die nächste Aufteilung kann das xgb das andere Feature auswählen. Daher werden die 2 kolinearen Merkmale beim xgb-Merkmalsranking wahrscheinlich gleich eingestuft. Ohne Vorkenntnisse oder eine andere Feature-Verarbeitung haben Sie fast keine Möglichkeit, anhand dieser bereitgestellten Rangfolge zu erkennen, dass die beiden Features kollinear sind.
Was nun die relative Wichtigkeit anbelangt, die den xgboost ausgibt, sollte er sehr ähnlich (oder vielleicht genau ähnlich) sein wie der mit sklearn-Gradienten verstärkte Baumrang. Erklärungen finden Sie hier .
quelle