Wie arbeitet der lineare Basislerner beim Boosten? Und wie funktioniert es in der xgboost-Bibliothek?

9

Ich weiß, wie man lineare Zielfunktionen und lineare Boosts in XGBoost implementiert. Meine konkrete Frage lautet: Wenn der Algorithmus zum Residuum (oder zum negativen Gradienten) passt, verwendet er bei jedem Schritt ein Merkmal (dh ein univariates Modell) oder alle Merkmale (multivariates Modell)?

Jeder Verweis auf die Dokumentation zu den linearen Boosts in XGBoost ist willkommen.

BEARBEITEN: Lineare Boosts können in XGBoost implementiert werden, indem der Parameter 'Booster' auf 'gblinear' gesetzt wird. Unter: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/ finden Sie nützliche Informationen zum linearen Boosten. Beachten Sie, dass ich nicht über die Zielfunktion (die auch linear sein kann) spreche, sondern über die Boosts selbst.

Vielen Dank!

Rolltreppe
quelle
1
Ich weiß nicht, wie es implementiert ist, aber ich sehe keinen Grund, warum es jeweils nur eine Funktion berücksichtigen sollte
Alexey Grigorev
@AlexeyGrigorev Es werden höchstwahrscheinlich viele Funktionen gleichzeitig benötigt. Wie werden diese Funktionen dann ausgewählt? Jedes Dokument über den spezifischen Prozess der linearen Verstärkung wäre sehr klarstellend.
Rolltreppe

Antworten:

17

Kurze Antwort auf Ihre Frage:

Wenn der Algorithmus zum Residuum (oder zum negativen Gradienten) passt, verwendet er bei jedem Schritt ein Merkmal (dh ein univariates Modell) oder alle Merkmale (multivariates Modell)?

Der Algorithmus verwendet eine Funktion oder alle Funktionen hängen von Ihrer Einrichtung ab. In meiner langen Antwort, die unten aufgeführt ist, werden in den Beispielen für Entscheidungsstümpfe und lineare Lernende alle Funktionen verwendet. Wenn Sie möchten, können Sie jedoch auch eine Teilmenge von Funktionen anpassen. Stichprobenspalten (Features) werden als Verringerung der Varianz des Modells oder Erhöhung der "Robustheit" des Modells angesehen, insbesondere wenn Sie über eine große Anzahl von Features verfügen.

In xgboost, für Baumbasislerner können Sie einstellen , colsample_bytreeauf Probe in jeder Iteration passen verfügt. Für Lernende mit linearer Basis gibt es keine solchen Optionen, daher sollte es für alle Funktionen geeignet sein. Darüber hinaus verwenden nicht zu viele Menschen lineare Lernende bei xgboost oder Gradientenverstärkung im Allgemeinen.


Lange Antwort für linear als schwacher Lernender zum Boosten:

In den meisten Fällen verwenden wir den linearen Lernenden möglicherweise nicht als Basislerner. Der Grund ist einfach: Das Addieren mehrerer linearer Modelle ist weiterhin ein lineares Modell.

Bei der Verbesserung unseres Modells handelt es sich um eine Summe von Basislernenden:

f(x)=m=1Mbm(x)

Dabei ist die Anzahl der Iterationen beim Boosten, das Modell für die -Iteration.Mbmmth

Wenn die Basislern linear sind, zum Beispiel an , dass wir nur laufen Iterationen und und , dann2b1=β0+β1xb2=θ0+θ1x

f(x)=m=12bm(x)=β0+β1x+θ0+θ1x=(β0+θ0)+(β1+θ1)x

Das ist ein einfaches lineares Modell! Mit anderen Worten, das Ensemblemodell hat die "gleiche Kraft" wie der Grundschüler!

Noch wichtiger ist, wenn wir das lineare Modell als Basislerner verwenden, können wir dies nur einen Schritt tun, indem wir das lineare System lösen, anstatt mehrere Iterationen beim Boosten zu durchlaufen.XTXβ=XTy


Daher möchten die Menschen andere Modelle als das lineare Modell als Basislerner verwenden. Baum ist eine gute Option, da das Hinzufügen von zwei Bäumen nicht gleich einem Baum ist. Ich werde es mit einem einfachen Fall demonstrieren: Entscheidungsstumpf, der ein Baum mit nur 1 Teilung ist.

Ich mache eine Funktionsanpassung, bei der die Daten durch eine einfache quadratische Funktion erzeugt werden, . Hier ist die gefüllte Konturgrundwahrheit (links) und die endgültige Entscheidung zur Verbesserung des Stumpfes (rechts).f(x,y)=x2+y2

Geben Sie hier die Bildbeschreibung ein

Überprüfen Sie nun die ersten vier Iterationen.

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass das Modell in der 4. Iteration im Gegensatz zum linearen Lernenden nicht durch eine Iteration (einen einzelnen Entscheidungsstumpf) mit anderen Parametern erreicht werden kann.


Bisher habe ich erklärt, warum Menschen keinen linearen Lernenden als Basislerner verwenden. Nichts hindert die Leute jedoch daran. Wenn wir ein lineares Modell als Basislerner verwenden und die Anzahl der Iterationen einschränken, entspricht dies dem Lösen eines linearen Systems, begrenzt jedoch die Anzahl der Iterationen während des Lösungsprozesses.

Das gleiche Beispiel, aber im 3D-Diagramm sind die Daten die rote Kurve und die grüne Ebene die endgültige Anpassung. Sie können leicht erkennen, dass das endgültige Modell ein lineares Modell ist und z=mean(data$label)parallel zur x-, y-Ebene verläuft. (Sie können sich vorstellen, warum? Dies liegt daran, dass unsere Daten "symmetrisch" sind, sodass jede Neigung der Ebene den Verlust erhöht.) Überprüfen Sie nun, was in den ersten 4 Iterationen passiert ist: Das angepasste Modell steigt langsam auf den optimalen Wert (Mittelwert) an.

Geben Sie hier die Bildbeschreibung ein


Abschließende Schlussfolgerung: Linearer Lernender ist nicht weit verbreitet, aber nichts hindert die Menschen daran, ihn zu verwenden oder in einer R-Bibliothek zu implementieren. Darüber hinaus können Sie es verwenden und die Anzahl der Iterationen begrenzen, um das Modell zu regulieren.

In Verbindung stehender Beitrag:

Gradientenverstärkung für lineare Regression - warum funktioniert das nicht?

Ist ein Entscheidungsstumpf ein lineares Modell?

Haitao Du
quelle
1
Ich würde sagen, dass die Kombination von n Bäumen ein Baum ist, egal wie groß n ist!
Metariat
@Metariat NEIN!, Kombinationsbäume sind KEIN Baum!. Für den Baum wird beim Teilen die Form "T" angezeigt. Aber verstärkter Stumpf sehen Sie "#" Form. dh der Split wird andere Splits kreuzen!
Haitao Du
Können Sie ein Beispiel für n Bäume geben? Ich werde dir einen gleichwertigen Baum geben!
Metariat
@Metariat Entschuldigung, ich habe momentan keine Zeit. Aber ich bin sicher, dass die Steigerung des Entscheidungsstumpfs nicht einfach durch einen Entscheidungsbaum erzeugt werden kann. Ich werde auf diese Frage zurückkommen, wenn ich Zeit habe.
Haitao Du
1
Ich bin damit einverstanden, dass diese Kombination von n Bäumen immer noch ein Baum ist, aber dieser Baum wird bedeutend größer sein. Im schlimmsten Fall ist die Anzahl der Blätter gleich dem Produkt der Anzahl der Blätter in allen Eingabebäumen, so dass die Komplexität eines solchen Baums unpraktisch ist. Andererseits ist bei linearen Funktionen die Komplexität genau gleich.
Tomek Tarczynski