Gradient Boosting Tree: „Je variabler desto besser“?

10

Aus dem Tutorial des XGBoost geht hervor, dass, wenn jeder Baum wächst, alle Variablen gescannt werden, um ausgewählt zu werden, um Knoten zu teilen, und die mit der maximalen Verstärkungsaufteilung ausgewählt wird. Meine Frage ist also, was wäre, wenn ich dem Datensatz einige Rauschvariablen hinzufügen würde, würden diese Rauschvariablen die Auswahl der Variablen beeinflussen (für jeden wachsenden Baum)? Meine Logik ist, dass diese Rauschvariablen, da sie KEINE maximale Verstärkungsaufteilung ergeben, niemals ausgewählt werden würden, sodass sie das Baumwachstum nicht beeinflussen.

Wenn die Antwort ja lautet, stimmt es dann, dass "je mehr Variablen, desto besser für XGBoost"? Betrachten wir nicht die Trainingszeit.

Wenn die Antwort ja lautet, ist es wahr, dass "wir nicht unwichtige Variablen aus dem Modell herausfiltern müssen".

Danke!

WCMC
quelle

Antworten:

10

Meine Logik ist, dass diese Rauschvariablen, da sie KEINE maximale Verstärkungsaufteilung ergeben, niemals ausgewählt werden würden, sodass sie das Baumwachstum nicht beeinflussen.

Dies ist nur für sehr große, nahezu unendliche Datensätze vollkommen korrekt, bei denen die Anzahl der Stichproben in Ihrem Trainingssatz eine gute Abdeckung aller Variationen bietet. In der Praxis kommt es bei genügend Dimensionen zu viel Abtastrauschen, da die Abdeckung möglicher Beispiele umso schwächer ist, je mehr Dimensionen Ihre Daten haben.

Rauschen bei schwachen Variablen, das zufällig mit der Zielvariablen korreliert , kann die Wirksamkeit von Boosting-Algorithmen einschränken. Dies kann leichter bei tieferen Teilungen im Entscheidungsbaum auftreten, bei denen die zu bewertenden Daten bereits in einer kleinen Teilmenge zusammengefasst wurden.

Je mehr Variablen Sie hinzufügen, desto wahrscheinlicher ist es, dass Sie schwach korrelierte Variablen erhalten, die für den Split-Auswahlalgorithmus für eine bestimmte Kombination einfach gut aussehen. Dadurch werden Bäume erstellt, die dieses Rauschen anstelle des beabsichtigten Signals lernen, und letztendlich schlecht verallgemeinern.

In der Praxis habe ich festgestellt, dass XGBoost im kleinen Maßstab ziemlich robust gegenüber Rauschen ist. Ich habe jedoch auch festgestellt, dass aus ähnlichen Gründen manchmal technische Variablen von schlechter Qualität anstelle besser korrelierter Daten ausgewählt werden. Es handelt sich also nicht um einen Algorithmus, bei dem "je mehr Variablen desto besser für XGBoost" und Sie sich um mögliche Funktionen von geringer Qualität kümmern müssen.

Neil Slater
quelle
Sehr schön. Vielen Dank! Denken Sie also, dass die Auswahl der Funktionen vor dem Anpassen von XGBoost aufgrund Ihrer Erfahrung erforderlich ist?
WCMC
@ Frank: Vielleicht. Sie können auch mit allen Funktionen beginnen und den xgboost-Bericht mit variabler Wichtigkeit verwenden, um Hilfe zu erhalten. Im Allgemeinen erspart Ihnen XGBoost jedoch nicht vollständig die üblichen Bedenken hinsichtlich der Auswahl und des Engineerings von Funktionen.
Neil Slater
Hallo @Neil, bitte schauen Sie unter datascience.stackexchange.com/questions/17288/… nach, wann immer Sie eine Chance haben. Danke.
WCMC
@Frank: Ich habe es bereits gestern getan und eine Frage zur Klärung hinterlassen, weil die Zahlen ein wenig abweichen.
Neil Slater
Hallo @Neil, da das vorherige Poster Ihre Frage nicht beantwortet hat, poste ich es hier mit meinem eigenen Projekt erneut. Ich habe dort auch einen Datensatz und ein R-Skript bereitgestellt, von denen ich hoffe, dass sie für andere bequemer sind, um das Problem zu verstehen. Ich freue mich, wenn Sie gerne helfen würden.
WCMC