Was bedeutet Interaktionstiefe in GBM?


30

Ich hatte eine Frage zum Interaktionstiefenparameter in gbm in R. Dies mag eine Noob-Frage sein, für die ich mich entschuldige, aber wie zeigt der Parameter, von dem ich glaube, dass er die Anzahl der Endknoten in einem Baum angibt, im Grunde genommen X-way an Interaktion zwischen den Prädiktoren? Ich versuche nur zu verstehen, wie das funktioniert. Außerdem erhalte ich ziemlich unterschiedliche Modelle, wenn ich einen Datensatz mit beispielsweise zwei unterschiedlichen Faktorvariablen im Vergleich zum gleichen Datensatz habe, mit der Ausnahme, dass diese beiden Faktorvariablen zu einem einzigen Faktor kombiniert werden (z. B. X-Ebenen in Faktor 1, Y-Ebenen in Faktor 2, kombinierte Variable) X * Y Faktoren). Letzteres ist wesentlich prädiktiver als Ersteres. Ich hatte gedacht, eine zunehmende Interaktionstiefe würde diese Beziehung aufgreifen.

Antworten:


22

Beide vorherigen Antworten sind falsch. Paket-GBM verwendet interaction.depthParameter als Anzahl von Teilungen, die an einem Baum ausgeführt werden müssen (beginnend mit einem einzelnen Knoten). Wenn bei jeder Aufteilung die Gesamtzahl der Knoten um 3 und die Anzahl der Endknoten um 2 erhöht wird (Knoten {linker Knoten, rechter Knoten, NA-Knoten}), beträgt die Gesamtzahl der Knoten im Baum 3 N + 1 und die Anzahl von Endknoten 2 N + 1 . Dies kann durch einen Blick auf die Ausgabe der Funktion überprüft werden .3N+12N+1pretty.gbm.tree

Das Verhalten ist eher irreführend, da der Benutzer tatsächlich erwartet, dass die Tiefe der Tiefe des resultierenden Baums entspricht. Es ist nicht.


Was ist N hier: Anzahl der Knoten, interact.depth oder etwas anderes?
Julian

Hierbei handelt es sich um eine Anzahl von Teilungen, die von einem einzelnen Knoten aus durchgeführt werden (auch Interaktionstiefe).
Zufälliger

1
Ich denke, jeder Split erhöht nur die Gesamtzahl der Endknoten um 1. Angenommen, ein Baum hat nur einen Split, dann hat er 2 Endknoten, jetzt führen Sie einen Split an einem der vorherigen Endknoten durch, und dann gibt es 3 Endknoten Knoten jetzt. Das Inkrement ist also nur 1. Verstehe ich das richtig oder habe ich etwas falsch verstanden?
Lily Long

1
@LilyLong Es ist möglicherweise nicht sofort klar, aber gbm teilt Knoten tatsächlich in drei auf, wobei das dritte Kind NA-Werte gruppiert (dh solche, die nicht direkt mit dem angegebenen Wert verglichen werden können). Das bedeutet, dass jede Aufteilung die Anzahl der Knoten um zwei erhöht. Das Paket hat sich möglicherweise weiterentwickelt, seit ich es das letzte Mal verwendet habe, um das Erstellen dieses dritten Kindes zu vermeiden. Überprüfen Sie dies also noch einmal, indem Sie die Funktion pretty.gbm.tree ausführen.
Zufälliger

2

Ich hatte eine Frage zum Interaktionstiefenparameter in gbm in R. Dies mag eine Noob-Frage sein, für die ich mich entschuldige, aber wie zeigt der Parameter, von dem ich glaube, dass er die Anzahl der Endknoten in einem Baum angibt, im Grunde genommen X-way an Interaktion zwischen den Prädiktoren?

Verknüpfung zwischen interactions.depth und der Anzahl der Endknoten

interaction.depthinteraction.depth

interaction.depth=#{TerminalNodes}+1

Verknüpfung zwischen interact.depth und der Interaktionsreihenfolge

Die Verbindung zwischen interaction.depthund Interaktionsreihenfolge ist mühsamer.

Anstatt mit dem Interaction.depth zu argumentieren, wollen wir mit der Anzahl der Endknoten argumentieren, die wir J nennen werden .

Beispiel: Nehmen wir an, Sie haben J = 4 Endknoten (interaction.depth = 3). Sie können entweder:

  1. Machen Sie den ersten Split an der Wurzel, dann den zweiten Split am linken Knoten der Wurzel und den dritten Split am rechten Knoten der Wurzel. Die Interaktionsreihenfolge für diesen Baum ist 2.
  2. Machen Sie den ersten Split auf der Wurzel, dann den zweiten Split auf dem linken (bzw. rechten) Knoten der Wurzel und einen dritten Split auf diesem linken (bzw. rechten) Knoten. Die Interaktionsreihenfolge für diesen Baum ist 3.

Pmin(J1,n)

1

Die vorherige Antwort ist nicht korrekt.

Stümpfe haben eine Interaction.depth von 1 (und zwei Blätter). Aber Interaction.depth = 2 gibt drei Blätter.

Also: NumberOfLeaves = interaction.depth + 1


0

Tatsächlich sind die vorherigen Antworten falsch.

N=2(K+1)1L=2K

2k

N=k=0K2k)

was äquivalent ist zu:

N=2(K+1)1

0

Du kannst es versuchen

table (predict (gbm (y ~., data = TrainingData, distribution = "gaussian", verbose = FALSE, n.trees = 1, shrinkage = 0.01, bag.fraction = 1, interaction.depth = 1), n.trees = 1))

und sehen, dass es nur 2 eindeutige vorhergesagte Werte gibt. Mit interaction.depth = 2 erhalten Sie 3 verschiedene vorhergesagte Werte. Und überzeugen Sie sich.


Unklar, wie dies die Frage beantwortet.
Michael R. Chernick
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.