xgboost binäre logistische Regression

9

Ich habe Probleme mit der logistischen Regression mit xgboost, die im folgenden Beispiel zusammengefasst werden kann.

Nehmen wir an, ich habe einen sehr einfachen Datenrahmen mit zwei Prädiktoren und einer Zielvariablen:

%Vor%

Ich kann Bilder posten, weil ich hier neu bin, aber wir können klar sehen, dass, wenn X1 = 1 und X2 = 0 ist, Y 0 ist und wenn X1 = 0 und X2 = 1, ist Y 1.

Meine Idee ist, ein Modell zu erstellen, das die Wahrscheinlichkeit ausgibt, dass eine Beobachtung zu jeder der Klassen gehört. Wenn ich also xgboost benutze, versuche ich zwei neue Beobachtungen (1,0) und (0,1) wie folgt vorherzusagen:

%Vor%

Die Ausgabe ist:

%Vor%

was, wie ich mir vorstelle, bedeutet, dass es für die erste Beobachtung eine Wahrscheinlichkeit von 50% gibt, dass es zu jeder der Klassen gehört.

Ich würde gerne wissen, warum der Algorithmus nicht einen richtigen (1,0) oder etwas näher dazu ausgibt, wenn die Beziehung zwischen den Variablen klar ist.

Zu Ihrer Information, ich habe es mit mehr Daten versucht (ich verwende nur 4 Zeilen zur Vereinfachung) und das Verhalten ist fast das gleiche; Was ich bemerke, ist, dass nicht nur die Wahrscheinlichkeiten nicht zu 1 summieren, sie sind oft auch sehr klein: (Dieses Ergebnis ist in einem anderen Datensatz, nichts mit dem obigen Beispiel zu tun)

%Vor%     
Italo 01.02.2016, 17:15
quelle

1 Antwort

3

Ok - hier ist was passiert ..

Der Hinweis, warum es nicht funktioniert, liegt darin, dass es in den kleineren Datensätzen nicht richtig trainiert werden kann. Ich trainierte genau dieses Modell und beobachte die Müllkippe aller Bäume, die du sehen wirst, die sie nicht teilen können.

(Baum-Dump unten)

KEINE SPLITS, sie wurden beschnitten!

[1] "booster[0]" "0:leaf=-0" "booster[1]" "0:leaf=-0" "booster[2]" "0:leaf=-0" [7] "booster[3]" "0:leaf=-0" "booster[4]" "0:leaf=-0" "booster[5]" "0:leaf=-0" [13] "booster[6]" "0:leaf=-0" "booster[7]" "0:leaf=-0" "booster[8]" "0:leaf=-0" [19] "booster[9]" "0:leaf=-0"

Es ist nicht genug Gewicht ist jedes der Blätter zu überwältigen xgboost 's interne Regularisierung (was bestraft es für das Wachsen)

Dieser Parameter ist möglicherweise von der Python-Version aus nicht erreichbar, aber Sie können ihn von R holen, wenn Sie eine github-Installation durchführen

Ссылка

  

Lambda [Standard = 1] L2-Regularisierungsausdruck für Gewichte

     

alpha [default = 0] L1 Regularisierungsterm für Gewichte

Im Grunde ist das der Grund, warum Ihr Beispiel besser trainiert, wenn Sie mehr Daten hinzufügen, aber mit nur vier Beispielen und Standardeinstellungen überhaupt nicht trainieren können.

    
T. Scharf 23.02.2016, 03:20
quelle