Ist Feature Engineering bei Verwendung von XGBoost noch nützlich?

9

Ich habe das Material zu XGBoost gelesen. Es scheint, dass diese Methode keine variable Skalierung erfordert, da sie auf Bäumen basiert und diese komplexe Nichtlinearitätsmuster-Interaktionen erfassen kann. Und es kann sowohl numerische als auch kategoriale Variablen verarbeiten, und es scheint auch, dass redundante Variablen diese Methode nicht zu sehr beeinflussen.

Normalerweise können Sie bei der Vorhersagemodellierung eine Auswahl unter allen vorhandenen Funktionen treffen und aus den vorhandenen Funktionen auch einige neue Funktionen erstellen. Wenn Sie also eine Teilmenge von Funktionen auswählen, denken Sie, dass Ihre Funktionen redundant sind. Wenn Sie aus dem aktuellen Funktionsumfang einige neue Funktionen erstellen, können Sie einige funktionale Änderungen an Ihren aktuellen Funktionen vornehmen. Dann sollten diese beiden Punkte in XGBoost behandelt werden. Bedeutet dies dann, dass Sie zur Verwendung von XGBoost diese Tuning-Parameter nur mit Bedacht auswählen müssen? Welchen Wert hat Feature Engineering mit XGBoost?

KevinKim
quelle
Wenn Sie nach einer kleinen Verbesserung der Leistung suchen, ist es besser, Interaktionen zwischen Features explizit zu modellieren, da Bäume nicht gut darin sind: stats.stackexchange.com/questions/147594/…
Anton Tarasenko

Antworten:

12

Definieren wir zuerst das Feature Engineering:

  1. Merkmalsauswahl
  2. Merkmalsextraktion
  3. Hinzufügen von Funktionen durch Domain-Know-how

XGBoost erledigt (1) für Sie. XGBoost erledigt (2) / (3) nicht für Sie.

Sie müssen also noch selbst Feature-Engineering durchführen. Nur ein Deep-Learning-Modell kann die Feature-Extraktion für Sie ersetzen.

FrancoSchweiz
quelle
7
  1. Funktionsauswahl: XGBoost führt die Funktionsauswahl bis zu einer bestimmten Stufe durch. Nach meiner Erfahrung wähle ich Features immer durch eine Runde xgboost aus, deren Parameter sich von denen unterscheiden, die ich für das endgültige Modell verwende. Normalerweise verwende ich niedrige Zahlen für die Stichprobenerfassung von Zeilen und Features sowie Bäume, die nicht tief sind und nur die Features beibehalten, die in das Modell eingegeben werden. Dann Feinabstimmung mit einem anderen Modell. Dies verhinderte eine Überanpassung für mich, wenn die Anzahl der Funktionen sehr hoch war.
  2. Feature-Generierung: XGBoost (Klassifizierung, Booster = gbtree) verwendet baumbasierte Methoden. Dies bedeutet, dass das Modell Schwierigkeiten haben würde, Beziehungen wie ab , a / b und a + b für die Merkmale a und b auszuwählen . Normalerweise füge ich die Interaktion zwischen Features von Hand hinzu oder wähle die richtigen mit einigen Heuristiken aus. Je nach Anwendung kann dies die Leistung erheblich steigern.
Mortezaaa
quelle
2

Welchen Wert hat Feature Engineering mit XGBoost?

Leistung vielleicht?

(Beachten Sie, dass wir kein XGBoost verwenden, sondern eine andere Bibliothek zur Erhöhung des Gradienten - obwohl die Leistung von XGBoost wahrscheinlich auch in irgendeiner Weise von der Dimensionalität der Daten abhängt.)

Wir haben einen Datensatz, in dem jedes Element aus 3 Signalen mit jeweils 6000 Abtastwerten besteht - das sind 18.000 Funktionen. Die direkte Verwendung dieser Funktionen dauert Ewigkeiten (Tage). Daher haben wir einige manuelle Funktionsentwicklungen durchgeführt, um die Anzahl der Funktionen auf etwa 200 zu reduzieren. Jetzt dauert das Training (einschließlich der Parametereinstellung) nur noch wenige Stunden.

Zum Vergleich: Vor kurzem haben wir auch begonnen, ConvNets mit denselben Daten und den gesamten 18.000 Funktionen zu trainieren (kein Feature Engineering). Sie erreichen nach nur ca. 2 Stunden Training die gleiche Genauigkeit wie die Gradientenverstärkungsmodelle.

stmax
quelle