¿Qué significa la profundidad de interacción en GBM?

30

Tenía una pregunta sobre el parámetro de profundidad de interacción en gbm en R. Esta puede ser una pregunta novata, por lo que me disculpo, pero ¿cómo el parámetro, que creo que denota el número de nodos terminales en un árbol, básicamente indica X-way interacción entre los predictores? Solo trato de entender cómo funciona eso. Además, obtengo modelos bastante diferentes si tengo un conjunto de datos con, digamos, dos variables de factores diferentes versus el mismo conjunto de datos, excepto que esas dos variables de factores se combinan en un solo factor (por ejemplo, niveles X en el factor 1, niveles Y en el factor 2, la variable combinada tiene Factores X * Y). Este último es significativamente más predictivo que el primero. Pensé que aumentar la profundidad de la interacción mejoraría esta relación.

tomas
fuente

Respuestas:

22

Ambas respuestas anteriores son incorrectas. El paquete GBM usa el interaction.depthparámetro como una cantidad de divisiones que debe realizar en un árbol (comenzando desde un solo nodo). A medida que cada división aumenta el número total de nodos en 3 y el número de nodos terminales en 2 (nodo {nodo izquierdo, nodo derecho, nodo NA}), el número total de nodos en el árbol será 3 N + 1 y el número de nodos terminales 2 N + 1 . Esto se puede verificar observando la salida de la función.3N+12N+1pretty.gbm.tree

El comportamiento es bastante engañoso, ya que el usuario realmente espera que la profundidad sea la profundidad del árbol resultante. No lo es.

aleatorio
fuente
¿Qué es N aquí: número de nodos, profundidad de interacción u otra cosa?
Julián
Es una serie de divisiones realizadas, comenzando desde un solo nodo (también, profundidad de interacción).
aleatorio
1
Creo que cada división solo aumenta el número total de nodos terminales en 1. así que supongamos que un árbol solo tiene una división, luego tiene 2 nodos terminales, ahora realiza una división en uno de los nodos terminales anteriores, y luego hay 3 terminales nodos ahora. entonces el incremento es solo 1. ¿Lo entiendo bien o entendí mal algo?
Lily Long
1
@LilyLong Puede que no esté claro de inmediato, pero gbm en realidad divide los nodos en tres, el tercer hijo agrupa los valores de NA (es decir, aquellos que no se pueden comparar directamente con el valor dado). Eso significa que cada división aumenta el número de nodos en dos. El paquete podría haber evolucionado desde la última vez que lo usé para evitar crear este tercer hijo, así que por favor verifique esto ejecutando la función pretty.gbm.tree.
aleatorio
2

Tenía una pregunta sobre el parámetro de profundidad de interacción en gbm en R. Esta puede ser una pregunta novata, por lo que me disculpo, pero ¿cómo el parámetro, que creo que denota el número de nodos terminales en un árbol, básicamente indica X-way interacción entre los predictores?

Enlace entre la profundidad de la interacción y el número de nodos terminales

interaction.depthinteraction.depth

interaction.depth=#{TerminalNodes}+1

Enlace entre la profundidad de la interacción y el orden de interacción

El vínculo entre interaction.depthy el orden de interacción es más tedioso.

En lugar de razonar con el interaction.depth, vamos a la razón con el número de nodos terminales, que vamos a llamadas J .

Ejemplo: Supongamos que tiene J = 4 nodos terminales (Interaction.depth = 3) puede:

  1. haga la primera división en la raíz, luego la segunda división en el nodo izquierdo de la raíz y la tercera división en el nodo derecho de la raíz. El orden de interacción para este árbol será 2.
  2. haga la primera división en la raíz, luego la segunda división en el nodo izquierdo (respectivamente derecho) de la raíz, y una tercera división en este nodo muy izquierdo (respectivamente derecho). El orden de interacción para este árbol será 3.

Pmin(J1,n)
Etienne Kintzler
fuente
1

La respuesta anterior no es correcta.

Los tocones tendrán una profundidad de interacción de 1 (y tendrán dos hojas). Pero la interacción.depth = 2 da tres hojas.

Entonces: NumberOfLeaves = Interacción.depth + 1

alexeigor
fuente
0

En realidad, las respuestas anteriores son incorrectas.

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

2k

N=k=0K2k)

que es equivalente a:

N=2(K+1)1
Marion Azoulai
fuente
0

Puedes probar

tabla (predecir (gbm (y ~., data = TrainingData, distribution = "gaussian", verbose = FALSE, n.trees = 1, shrinkage = 0.01, bag.fraction = 1, Interaction.depth = 1), n.trees = 1))

y vea que solo hay 2 valores predichos únicos. interactive.depth = 2 le dará 3 valores predichos distintos. Y convencerte a ti mismo.

StatPhD
fuente
No está claro cómo esto responde la pregunta.
Michael R. Chernick