Klassifizierung mit Gradient Boosting: So behalten Sie die Vorhersage in [0,1] bei


17

Die Frage

Ich habe Probleme zu verstehen, wie die Vorhersage im Intervall [0,1] wenn ich eine binäre Klassifizierung mit Gradient Boosting durchführe.

Angenommen, wir arbeiten an einem binären Klassifizierungsproblem und unsere Zielfunktion ist der logarithmische Verlust , wobei ist die Zielvariable und ist unser aktuelles Modell.yilog(Hm(xi))+(1yi)log(1Hm(xi))y{0,1}H

Wenn wir den nächsten schwachen Lernenden so trainieren, dass unser neues Modell , welchen Mechanismus soll H_i \ in [0,1] halten ? Oder, vielleicht eine relevantere Frage, gibt es einen solchen Mechanismus?hiHi=Hi1+hiHi[0,1]


Mehr Informationen darüber, was ich tue

Ich versuche mit Hilfe von Regressionsbäumen eine Gradientenanhebung zu implementieren. Um dies zu vermeiden, multipliziere ich mit dem Faktor c \ in [0, c _ {\ text {max}}] , sodass H + c _ {\ text {max}} h nicht unter null oder darüber liegt eins, und ich wähle das c in diesem Bereich, der die Verlustfunktion minimiert.hic[0,cmax]H+cmaxhc

Dies bringt das folgende Problem mit sich: Nach einigen Runden habe ich einen Punkt, der perfekt klassifiziert ist, und der beste verfügbare Split, um den Klassifikator in Richtung des Farbverlaufs zu verschieben, möchte diesen Punkt über einen Punkt verschieben, womit ich sicher gehe, dass dies nicht passiert Einstellung c=0 . Somit wählt jede nächste Iteration den gleichen Split und das gleiche c=0 .

Ich versuchte es mit gängigen Regularisierungspraktiken

  • Verringerung der Lernrate durch Multiplikation von c mit . Dies verzögert nur das Problem.μ=0.01
  • Durch Subsampling des Feature-Space lassen sich einige Punkte sehr einfach klassifizieren. Sie markieren fast jedes Kästchen im Feld "Ist das ein Positiv?". Form, und fast jeder "gute Split" zeigt dieses Verhalten.

Ich denke, dies ist kein Problem der Parameter, und es sollte eine vernünftigere Möglichkeit geben, dies zu beheben. Ich lehne die Möglichkeit, dass meine Implementierung fehlerhaft ist, nicht ab, habe jedoch nichts gefunden, was dieses Problem angeht.

Was wir im Zusammenhang mit dem logistischen Verlust manipulieren, sollte eine Wahrscheinlichkeit sein. Wie können wir dies vermeiden?


Meine Intuition wäre, das Modell, das wir bauen, , in eine Sigmoid-Funktion zu setzen, so dass es an gebunden ist , und ich denke, das würde funktionieren, aber ich möchte wissen, ob es andere Lösungen gibt. Da die Gradientenverstärkung bei Klassifizierungsaufgaben anscheinend erfolgreich eingesetzt wird, sollte eine "richtige" (dh mit Begründung) Lösung vorliegen.H[0,1]


Sie könnten verlangen, dass multiplikativ ist, indem sich additiv zu Ihren anderen Experten verhält. Hln(H)
Alex R.

Antworten:


21

Daran denke ich gerne in Analogie zu linearen Modellen und deren Erweiterung auf GLMs (generalisierte lineare Modelle).

In einem linearen Modell passen wir eine lineare Funktion an, um unsere Reaktion vorherzusagen

y^=β0+β1x1+βnxn

Um auf andere Situationen zu verallgemeinern, führen wir eine Verknüpfungsfunktion ein, die den linearen Teil des Modells auf die Skala der Antwort transformiert (technisch ist dies eine inverse Verknüpfung, aber ich denke, es ist einfacher, sich dies so vorzustellen und den linearen Prädiktor zu transformieren in eine Antwort umwandeln, als die Antwort in einen linearen Prädiktor umzuwandeln.

Das logistische Modell verwendet beispielsweise die Sigmoid- (oder Logit-) Funktion

y^=11+exp((β0+β1x1+βnxn))

und die Poisson-Regression verwendet eine Exponentialfunktion

y^=exp(β0+β1x1+βnxn)

Um eine Analogie zur Gradientenverstärkung zu konstruieren, ersetzen wir den linearen Teil dieser Modelle durch die Summe der verstärkten Bäume. So wird beispielsweise der Gauß-Fall (analog zur linearen Regression) bekannt

y^=ihi

wo ist unsere Sequenz von schwachen Lernenden. Der Binomialfall ist analog zur logistischen Regression (wie Sie in Ihrer Antwort festgestellt haben).hi

y^=11+exp(ihi)

und Poisson-Boosting ist analog zur Poisson-Regression

y^=exp(ihi)

Es bleibt die Frage, wie man diese Boost-Modelle einfügt, wenn es um die Link-Funktion geht. Für den Gaußschen Fall, bei dem die Verknüpfung die Identitätsfunktion ist, funktioniert das oft gehörte Mantra, schwache Lernende an die Residuen des aktuellen Arbeitsmodells anzupassen, aber dies verallgemeinert sich nicht wirklich auf die komplizierteren Modelle. Der Trick besteht darin, die Verlustfunktion zu schreiben, die als Funktion des linearen Teils des Modells (dh des i β i x i) minimiert wirdiβixi Teils der GLM-Formulierung).

Beispielsweise tritt der Binomialverlust normalerweise als auf

iyilog(pi)+(1yi)log(1pi)

Hier ist der Verlust eine Funktion von , den vorhergesagten Werten im gleichen Maßstab wie die Antwort, und p i ist eine nichtlineare Transformation des linearen Prädiktors L i . Stattdessen können wir dies als Funktion von L i wieder ausdrücken (in diesem Fall auch als log odds bezeichnet).pipiLiLi

iyiLilog(1+exp(Li))

Dann können wir den Gradienten von diesem in Bezug auf und steigern, um diese Größe direkt zu minimieren.L

Erst ganz am Ende, wenn wir Vorhersagen für den Benutzer erstellen möchten, wenden wir die Verknüpfungsfunktion auf die endgültige Sequenz der schwachen Lernenden an, um die Vorhersagen auf den gleichen Maßstab wie die Antwort zu bringen. Während wir das Modell anpassen, arbeiten wir intern die ganze Zeit an der linearen Skala.


2
Stimmen Sie zu mit "Schreiben Sie die Verlustfunktion, die als Funktion des linearen Teils des Modells minimiert wird". Aber ich denke, ein einfacher Weg, es zu verstehen, ohne logarithmische Quoten abzuleiten, ist: für den linearen Teil des Modells, dh , denke an die Verlustfunktion als - i ( y i log 1)r(,), und der Pseudorest ist nur, um die Ableitung des Verlustes fürr zu machen. i(yilog11+er+(1yi)log(111+er))r
user2830451

@ matthew-drury Können Sie bitte etwas Licht auf den multinomialen Abschnitt der K-Klasse desselben Algorithmus werfen, in dem eine ähnliche Idee auf die Arbeit mit diesem Algorithmus ausgeweitet wird?
MixCoded

6

Nach einigen Recherchen scheint sich meine Intuition und Alex R. zu äußern richtig sind.

[0,1]HHR

11+eH[0,1]
H

Dies wurde in der Veröffentlichung Additive logistische Regression vorgeschlagen: eine statistische Betrachtung der Steigerung von LogitBoost (Wikipedia) durch Friedman, Hastie und Tibshirani , um eine Anpassung von AdaBoost (Wikipedia) an den logistischen Verlust zu erstellen .

Wenn es möglich ist, von einer linearen Regression zu einer logistischen Regression überzugehen, indem ein Sigmoid hinzugefügt wird, funktioniert dies auch, um die Regressionsanhebung in eine Klassifikationsanhebung umzuwandeln.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.