34 votos

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

Tenía una pregunta sobre el parámetro de profundidad de la interacción en gbm en R. Puede que sea una pregunta de novato, por lo que me disculpo, pero ¿cómo el parámetro, que creo que denota el número de nodos terminales en un árbol, indica básicamente la interacción de X vías entre los predictores? Sólo trato de entender cómo funciona. Además, obtengo modelos bastante diferentes si tengo un conjunto de datos con, por ejemplo, dos variables de factor diferentes frente al mismo conjunto de datos, excepto que esas dos variables de factor se combinan en un único factor (por ejemplo, niveles X en el factor 1, niveles Y en el factor 2, la variable combinada tiene factores X * Y). Esta última es significativamente más predictiva que la primera. Pensaba que el aumento de la profundidad de las interacciones permitiría detectar esta relación.

25voto

Andrzej Doyle Puntos 52541

Las dos respuestas anteriores son incorrectas. El paquete GBM utiliza interaction.depth como un número de divisiones que debe realizar en un árbol (partiendo de un solo nodo). Como cada división aumenta el número total de nodos en 3 y el número de nodos terminales en 2 (nodo $\to$ {nodo izquierdo, nodo derecho, nodo NA}) el número total de nodos del árbol será $3*N+1$ y el número de nodos terminales $2*N+1$ . Esto puede verificarse echando un vistazo a la salida de pretty.gbm.tree función.

El comportamiento es bastante engañoso, ya que el usuario espera efectivamente que la profundidad sea la del árbol resultante. Pero no es así.

2voto

Eric Conner Puntos 164

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

Relación entre interaction.depth y el número de nodos terminales

Uno como para ver interaction.depth como el número de nodos divididos. Un interaction.depth fijado en k dará lugar a nodos con k+1 nodos terminales (omitiendo los nodos NA), por lo que tenemos : $$interaction.depth=\#\{Terminal Nodes\}+1 $$

Enlace entre interaction.depth y la orden de interacción

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

En lugar de razonar con la interacción.profundidad, vamos a razonar con el número de nodos terminales, que llamaremos J .

Ejemplo: Digamos que tiene J=4 nodos terminales (interaction.depth=3) puede :

  1. hacer la primera división en la raíz, luego la segunda en el nodo izquierdo de la raíz y la tercera en el nodo derecho de la raíz. El orden de interacción para este árbol será 2.
  2. hacer 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 mismo nodo izquierdo (respectivamente derecho). El orden de interacción para este árbol será 3.

Por lo tanto, no se puede saber de antemano cuál será el orden de interacción entre sus características en un árbol determinado. Sin embargo, es posible acotar este valor. Sea P sea el orden de interacción de las características en un árbol dado. Tenemos : $$P\leq min(J-1,n)$$ siendo n el número de observaciones. Para más detalles, véase la sección 7 del artículo original de Friedman .

1voto

Michael Irwin Puntos 169

La respuesta anterior no es correcta.

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

Así que: NumberOfLeaves = interaction.depth + 1

0voto

Sonaten Puntos 121

En realidad, las respuestas anteriores son incorrectas.

Sea K la profundidad de la interacción, entonces el número de nodos N y de hojas L (es decir, los nodos terminales) vienen dados respectivamente por lo siguiente: $$\begin{align*} N &= 2^{(K+1)} - 1\\ L &= 2^K \end{align*} $$ Las 2 fórmulas anteriores pueden demostrarse fácilmente: un árbol de profundidad K puede verse como si tuviera K+1 niveles k que van de 0 (nivel de raíz) a K (nivel de hoja).

Cada uno de estos niveles tiene $2^k$ nodos. Y el número total de nodos del árbol es la suma del número de nodos de cada nivel.

En términos matemáticos: $$ N = \sum_{k=0}^K 2^k) $$

lo que equivale a:

$$N = 2^{(K+1)} - 1 $$ (según la fórmula de la suma de los términos de una progresión geométrica).

0voto

Ahmad Dlshad Puntos 1

Puedes probar

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))

y ver que sólo hay 2 valores predichos únicos. interaction.depth = 2 obtendrá 3 valores predichos distintos. Y convénzase usted mismo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X