R gbm Umgang mit fehlenden Werten

7

Weiß jemand, wie gbm in R fehlende Werte behandelt? Ich kann anscheinend keine Erklärung mit Google finden.

    
screechOwl 05.02.2013, 23:04
quelle

5 Antworten

11

Um zu erklären, was gbm mit fehlenden Prädiktoren macht, lassen Sie uns zuerst einen einzelnen Baum eines gbm-Objekts visualisieren.

Angenommen, Sie haben ein gbm-Objekt mygbm. Mit pretty.gbm.tree(mygbm, i.tree=1) können Sie den ersten Baum auf mygbm visualisieren, z. B .:

%Vor%

Weitere Informationen finden Sie in der gbm-Dokumentation. Jede Zeile entspricht einem Knoten, und die erste (unbenannte) Spalte ist die Knotennummer. Wir sehen, dass jeder Knoten einen linken und rechten Knoten hat (die auf -1 gesetzt werden, falls der Knoten ein Blatt ist). Wir sehen auch, dass jedem Knoten ein MissingNode zugeordnet ist.

Um eine Beobachtung entlang des Baumes zu starten, beginnen wir bei Knoten 0. Wenn eine Beobachtung einen fehlenden Wert in SplitVar = 46 hat, wird sie in den Baum zum Knoten MissingNode = 9 gesendet. Die Vorhersage des Baumes für eine solche Beobachtung wird SplitCodePred = -4.396393e-06 sein, was die gleiche Vorhersage ist, die der Baum hatte, bevor eine Aufteilung auf den Knoten Null erfolgt ( Prediction = -4.396393e-06 für den Knoten Null).

Die Prozedur ist für andere Knoten und geteilte Variablen ähnlich.

    
davalo 14.09.2015, 17:39
quelle
4

Es scheint, dass fehlende Werte an einen separaten Knoten innerhalb jedes Baums gesendet werden. Wenn Sie ein gbm-Objekt namens "mygbm" haben, sehen Sie, indem Sie "pretty.gbm.tree (mygbm, i.tree = 1)" eingeben, dass es für jeden Split in der Struktur einen LeftNode, einen RightNode und einen MissingNode gibt. Dies bedeutet, dass (unter der Annahme, dass interaction.depth = 1 ist) jeder Baum 3 Endknoten hat (1 für jede Seite des Split und einen für wo der Prädiktor fehlt).

    
user2332165 29.04.2013 12:59
quelle
1

Beginnen Sie dann mit dem Quellcode. Wenn Sie gbm an der Konsole eingeben, wird der Quellcode angezeigt:

%Vor%

Eine kurze Lektüre schlägt vor, dass die Daten in einen Modellrahmen gelegt werden und dass NAs mit na.pass behandelt werden, also wiederum, ?na.pass Das zu lesen, sieht so aus, als ob sie nichts besonderes mit ihnen machen, aber Sie würden wahrscheinlich Ich muss den gesamten Anpassungsprozess nachlesen, um zu sehen, was das auf lange Sicht bedeutet. Sieht so aus, als müsstest du vielleicht auch den Code von gbm.fit und so weiter ansehen.

    
Bryan Hanson 06.02.2013 00:20
quelle
1

Der offizielle Leitfaden für gbms führt zu fehlenden Werten für die Testdaten würde annehmen, dass sie codiert sind, um fehlende Werte zu behandeln.

    
Tobias Domhan 18.02.2013 17:41
quelle
1

Das gbm-Paket behandelt insbesondere NAs (fehlende Werte) wie folgt. Der Algorithmus funktioniert, indem er Klassifizierungs- oder Regressionsbäume erstellt und seriell kombiniert. Sogenannte Basis-Lernerbäume werden gebildet, indem Beobachtungen in linke und rechte Teilungen aufgeteilt werden (@ user2332165 ist rechts). Es gibt auch einen separaten Knotentyp von Missing in gbm. Wenn die Zeile oder die Beobachtung keinen Wert für diese Variable enthält, wendet der Algorithmus eine Surrogat-Split-Methode an.

Wenn Sie die Aufspaltung besser verstehen wollen, empfehle ich das Paket rpart vignette .

    
c.gutierrez 10.04.2014 22:32
quelle

Tags und Links