Weiß jemand, wie gbm
in R
fehlende Werte behandelt? Ich kann anscheinend keine Erklärung mit Google finden.
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 .:
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.
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).
Beginnen Sie dann mit dem Quellcode. Wenn Sie gbm
an der Konsole eingeben, wird der Quellcode angezeigt:
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.
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.
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 .
Tags und Links r na missing-data