Disminución de Gini e impureza de Gini de nodos hijos

15

Estoy trabajando en la medida de importancia de la característica Gini para bosque aleatorio. Por lo tanto, necesito calcular la disminución de Gini en la impureza del nodo. Esta es la forma en que lo hago, lo que conduce a un conflicto con la definición, lo que sugiere que debo estar equivocado en alguna parte ... :)

Para un árbol binario, y dadas las probabilidades de los hijos izquierdo y derecho, puedo calcular la impureza de Gini de un nodo n :

i(n)=1pl2pr2

Y la disminución de Gini:

Δi(n)=i(n)pli(nl)pri(nr)

Entonces, para este ejemplo con 110 observaciones en un nodo:

- node (110)
   - left (100)
      - left_left (60)
      - left_right (40)
   - right (10)
      - right_left (5)
      - right_right (5)

Calcularía la disminución de Gini para un nodo como este:

i(left)=1(60/100)²(40/100)²=0.48i(right)=1(5/10)²(5/10)²=0.50i(node)=1(100/110)²(10/110)²=0.16

Pero siguiendo la definición de Breiman (o esta respuesta en CV: Cómo medir / clasificar "importancia variable" cuando uso CART , pero no tengo acceso al libro referenciado), el criterio de impureza del descendiente debe ser menor que el padre nodo:

Importancia de Gini
Cada vez que se realiza una división de un nodo en la variable m, el criterio de impureza de Gini para los dos nodos descendientes es menor que el nodo principal. Sumar las disminuciones de gini para cada variable individual sobre todos los árboles en el bosque da una importancia variable rápida que a menudo es muy consistente con la medida de importancia de permutación.

Porque de lo contrario, conduce a una disminución negativa de Gini ...

Δi(node)=i(node)(100/110)i(left)(10/110)i(right)=0.32

Entonces, si alguien pudiera decir dónde me equivoco, estaría muy agradecido porque parece que extraño algo evidente aquí ...

Remi Mélisson
fuente

Respuestas:

16

Simplemente no usó la variable de clase objetivo en absoluto. La impureza de Gini, como todas las demás funciones de impureza, mide la impureza de los resultados después de una división. Lo que ha hecho es medir algo usando solo el tamaño de la muestra.

Intento derivar la fórmula para su caso.

Supongamos por simplicidad que tiene un clasificador binario. Denote con el atributo de prueba, con C el atributo de clase que tiene valores de c + , c - .ACc+,c

El índice de Gini inicial antes de la división está dado por donde P ( A + ) es la proporción de puntos de datos que tienen un valor de c + para la variable de clase.

I(A)=1P(A+)2P(A)2
P(A+)c+

Ahora, la impureza para el nodo izquierdo sería I ( A r ) = 1 - P ( A r + ) 2 - P ( A r - ) 2 donde P ( A l + )

I(Al)=1P(Al+)2P(Al)2
I(Ar)=1P(Ar+)2P(Ar)2
P(Al+)es la proporción de puntos de datos del subconjunto izquierdo de que tienen el valor c + en la variable de clase, etc.Ac+

Ahora la fórmula final para GiniGain sería

GiniGain(A)=I(A)pleftI(Al)prightI(Ar)
pleft#|Al|#|Al|+#|Ar|A

Siento que mi notación podría mejorarse, miraré más tarde cuando tenga más tiempo.

Conclusión

Usar solo un número de puntos de datos no es suficiente, la impureza significa qué tan bien una característica (característica de prueba) puede reproducir la distribución de otra característica (característica de clase). La distribución de características de prueba produce el número que usó (cómo a la izquierda, cómo a la derecha), pero la distribución de la característica de clase no se usa en sus fórmulas.

Edición posterior: pruebe por qué disminuye

Ahora noté que me perdí la parte que prueba por qué siempre el índice de Gini en el nodo secundario es menor que en el nodo primario. No tengo una prueba completa o verificada, pero creo que es una prueba válida. Para otras cosas relacionadas con el tema, puede consultar la Nota técnica: Algunas propiedades de los criterios de división: Leo Breiman . Ahora seguirá mi prueba.

(a,b)ab(un,si)

Para encontrar la mejor división, clasificamos las instancias de acuerdo con una función de prueba y probamos todas las divisiones binarias posibles. Ordenado por una característica dada es en realidad una permutación de instancias, en las que las clases comienzan con una instancia de la primera clase o de la segunda clase. Sin perder la generalidad, supondremos que comienza con una instancia de la primera clase (si este no es el caso, tenemos una prueba espejo con el mismo cálculo).

(1,0 0)(un-1,si)h(left)=1(1/1)2(0/1)2=0. Entonces, en el lado izquierdo tenemos un valor de índice de Gini más pequeño. ¿Qué tal el nodo correcto?

h(parent)=1(aa+b)2(ba+b)2
h(right)=1(a1(a1)+b)2(b(a1)+b)2

a0

Ahora, la etapa final de la prueba es señalar que, si bien consideramos todos los puntos de división posibles dictados por los datos que tenemos, mantenemos el que tiene el índice de Gini agregado más pequeño, lo que significa que el óptimo que elegimos es menor o igual que el trivial que probé que es más pequeño. Lo que concluye que al final el índice de Gini disminuirá.

Como conclusión final, debemos tener en cuenta que incluso si varias divisiones pueden dar valores más grandes que el nodo primario, el que elijamos será el más pequeño entre ellos y también más pequeño que el valor del índice de Gini primario.

Espero eso ayude.

rapaio
fuente
Muchas gracias, desbloqueaste mi cerebro ... De hecho, dado que estoy tratando con árboles de regresión, usar la variable de clase objetivo parecía menos obvio que para una tarea de clasificación pura. Pero ahora tiene mucho sentido.
Remi Mélisson
Actualicé la respuesta para contener las partes faltantes.
rapaio