Tweet Share

Última actualización el 10 de diciembre de 2020

La ganancia de información calcula la reducción de la entropía o la sorpresa de transformar un conjunto de datos de alguna manera.

Se utiliza comúnmente en la construcción de árboles de decisión de un conjunto de datos de entrenamiento, mediante la evaluación de la ganancia de información para cada variable, y la selección de la variable que maximiza la ganancia de información, que a su vez minimiza la entropía y mejor divide el conjunto de datos en grupos para la clasificación efectiva.

La ganancia de información también se puede utilizar para la selección de características, mediante la evaluación de la ganancia de cada variable en el contexto de la variable de destino. En este uso ligeramente diferente, el cálculo se denomina información mutua entre las dos variables aleatorias.

En este post, descubrirá la ganancia de información y la información mutua en el aprendizaje automático.

Después de leer este post, sabrás:

  • La ganancia de información es la reducción de la entropía o la sorpresa al transformar un conjunto de datos y se utiliza a menudo en el entrenamiento de árboles de decisión.
  • La ganancia de información se calcula comparando la entropía del conjunto de datos antes y después de una transformación.
  • La información mutua calcula la dependencia estadística entre dos variables y es el nombre que recibe la ganancia de información cuando se aplica a la selección de variables.

Comienza tu proyecto con mi nuevo libro Probability for Machine Learning, que incluye tutoriales paso a paso y los archivos de código fuente de Python para todos los ejemplos.

Comencemos.

  • Actualización Nov/2019: Mejorada la descripción de los fundamentos de la info/entropía (gracias HR).
  • Actualización Ago/2020: Añadidos los paréntesis que faltaban en la ecuación (gracias David)

Qué es la ganancia de información y la información mutua para el aprendizaje automático
Foto de Giuseppe Milo, algunos derechos reservados.

Resumen

Este tutorial está dividido en cinco partes; son:

  1. ¿Qué es la ganancia de información?
  2. Ejemplo práctico de cálculo de la ganancia de información
  3. Ejemplos de ganancia de información en el aprendizaje automático
  4. ¿Qué es la información mutua?
  5. ¿Cómo se relacionan la ganancia de información y la información mutua?

¿Qué es la ganancia de información?

La ganancia de información, o IG para abreviar, mide la reducción de la entropía o la sorpresa al dividir un conjunto de datos según un valor dado de una variable aleatoria.

Una mayor ganancia de información sugiere un grupo o grupos de muestras de menor entropía y, por tanto, menor sorpresa.

Se puede recordar que la información cuantifica lo sorprendente que es un evento en bits. Los eventos con menor probabilidad tienen más información, los eventos con mayor probabilidad tienen menos información. La entropía cuantifica cuánta información hay en una variable aleatoria, o más concretamente en su distribución de probabilidad. Una distribución sesgada tiene una entropía baja, mientras que una distribución en la que los eventos tienen igual probabilidad tiene una entropía mayor.

En la teoría de la información, nos gusta describir la «sorpresa» de un evento. Los sucesos de baja probabilidad son más sorprendentes, por lo que tienen una mayor cantidad de información. Mientras que las distribuciones de probabilidad donde los eventos son igualmente probables son más sorprendentes y tienen mayor entropía.

  • Distribución de probabilidad sesgada (no sorprendente): Baja entropía.
  • Distribución de probabilidad equilibrada (sorprendente): Alta entropía.

Para más información sobre los fundamentos de la información y la entropía, véase el tutorial:

  • Una suave introducción a la entropía de la información

Ahora, consideremos la entropía de un conjunto de datos.

Podemos pensar en la entropía de un conjunto de datos en términos de la distribución de probabilidad de las observaciones en el conjunto de datos que pertenecen a una clase u otra, por ejemplo, dos clases en el caso de un conjunto de datos de clasificación binaria.

Una interpretación de la entropía desde la teoría de la información es que especifica el número mínimo de bits de información necesarios para codificar la clasificación de un miembro arbitrario de S (es decir, un miembro de S extraído al azar con probabilidad uniforme).

– Página 58, Machine Learning, 1997.

Por ejemplo, en un problema de clasificación binaria (dos clases), podemos calcular la entropía de la muestra de datos como sigue:

  • Entropía = -(p(0) * log(P(0)) + p(1) * log(P(1)))

Un conjunto de datos con una división 50/50 de muestras para las dos clases tendría una entropía máxima (sorpresa máxima) de 1 bit, mientras que un conjunto de datos desequilibrado con una división de 10/90 tendría una entropía menor, ya que habría menos sorpresa para un ejemplo extraído al azar del conjunto de datos.

Podemos demostrarlo con un ejemplo de cálculo de la entropía para este conjunto de datos desequilibrado en Python. El ejemplo completo aparece a continuación.

Ejecutando el ejemplo, podemos ver que la entropía del conjunto de datos para la clasificación binaria es inferior a 1 bit. Es decir, se requiere menos de un bit de información para codificar la etiqueta de clase para un ejemplo arbitrario del conjunto de datos.

1
entropía: 0.469 bits

De este modo, la entropía puede utilizarse como cálculo de la pureza de un conjunto de datos, por ej.Una entropía de 0 bits indica un conjunto de datos que contiene una clase; una entropía de 1 o más bits sugiere una entropía máxima para un conjunto de datos equilibrado (dependiendo del número de clases), con valores intermedios que indican niveles entre estos extremos.

La ganancia de información proporciona una manera de utilizar la entropía para calcular cómo un cambio en el conjunto de datos afecta a la pureza del conjunto de datos, por ejemplo, la distribución de las clases. Una entropía más pequeña sugiere más pureza o menos sorpresa.

… ganancia de información, es simplemente la reducción esperada en la entropía causada por la partición de los ejemplos de acuerdo con este atributo.

– Página 57, Machine Learning, 1997.

Por ejemplo, podemos querer evaluar el impacto en la pureza al dividir un conjunto de datos S por una variable aleatoria con un rango de valores.

Se puede calcular de la siguiente manera:

  • IG(S, a) = H(S) – H(S | a)

Donde IG(S, a) es la información para el conjunto de datos S para la variable a por una variable aleatoria, H(S) es la entropía para el conjunto de datos antes de cualquier cambio (descrito anteriormente) y H(S | a) es la entropía condicional para el conjunto de datos dada la variable a.

Este cálculo describe la ganancia en el conjunto de datos S para la variable a. Es el número de bits que se ahorran al transformar el conjunto de datos.

La entropía condicional puede calcularse dividiendo el conjunto de datos en grupos para cada valor observado de a y calculando la suma de la proporción de ejemplos en cada grupo de todo el conjunto de datos multiplicada por la entropía de cada grupo.

  • H(S | a) = suma v en a Sa(v)/S * H(Sa(v))

Donde Sa(v)/S es la proporción del número de ejemplos en el conjunto de datos con la variable a tiene el valor v, y H(Sa(v)) es la entropía del grupo de muestras donde la variable a tiene el valor v.

Esto puede sonar un poco confuso.

Podemos concretar el cálculo de la ganancia de información con un ejemplo trabajado.

Quieres aprender probabilidad para el aprendizaje automático

Toma ahora mi curso intensivo gratuito de 7 días por correo electrónico (con código de ejemplo).

Haga clic para inscribirse y obtener también una versión gratuita del curso en formato PDF Ebook.

Descargue su minicurso gratuito

Ejemplo trabajado de cálculo de ganancia de información

En esta sección, concretaremos el cálculo de ganancia de información con un ejemplo trabajado.

Podemos definir una función para calcular la entropía de un grupo de muestras en función de la proporción de muestras que pertenecen a la clase 0 y a la clase 1.

Ahora, consideremos un conjunto de datos con 20 ejemplos, 13 para la clase 0 y 7 para la clase 1. Podemos calcular la entropía para este conjunto de datos, que tendrá menos de 1 bit.

Considere ahora que una de las variables del conjunto de datos tiene dos valores únicos, digamos «valor1» y «valor2». Nos interesa calcular la ganancia de información de esta variable.

Supongamos que si dividimos el conjunto de datos por valor1, tenemos un grupo de ocho muestras, siete para la clase 0 y una para la clase 1. Podemos entonces calcular la entropía de este grupo de muestras.

Ahora, supongamos que dividimos el conjunto de datos por el valor2; tenemos un grupo de 12 muestras con seis en cada grupo. Esperaríamos que este grupo tuviera una entropía de 1.

Por último, podemos calcular la ganancia de información para esta variable basándonos en los grupos creados para cada valor de la variable y la entropía calculada.

La primera variable dio lugar a un grupo de ocho ejemplos del conjunto de datos, y el segundo grupo tenía las 12 muestras restantes del conjunto de datos. Por lo tanto, tenemos todo lo que necesitamos para calcular la ganancia de información.

En este caso, la ganancia de información se puede calcular como:

  • Entropía(Conjunto de datos) – (Recuento(Grupo1) / Recuento(Conjunto de datos) * Entropía(Grupo1) + Recuento(Grupo2) / Recuento(Conjunto de datos) * Entropía(Grupo2))

O:

  • Entropía(13/20, 7/20) – (8/20 * Entropía(7/8, 1/8) + 12/20 * Entropía(6/12, 6/12))

O en código:

1
2
3
4

# calcula la ganancia de información
ganancia = s_entropía – (8/20 * s1_entropía + 12/20 * s2_entropía)
print(‘Ganancia de información: %.3f bits’ % ganancia)

Enlazando todo esto, el ejemplo completo aparece a continuación.

Primero, se calcula la entropía del conjunto de datos a poco menos de 1 bit. A continuación, la entropía del primer y segundo grupo se calcula en aproximadamente 0,5 y 1 bits respectivamente.

Por último, la ganancia de información para la variable se calcula en 0,117 bits. Es decir, la ganancia del conjunto de datos al dividirlo mediante la variable elegida es de 0,117 bits.

1
2
3
4

Entropía del conjunto de datos: 0.934 bits
Entropía del grupo 1: 0.544 bits
Entropía del grupo 2: 1.000 bits
Ganancia de información: 0.117 bits

Ejemplos de ganancia de información en el aprendizaje automático

Tal vez el uso más popular de la ganancia de información en el aprendizaje automático es en los árboles de decisión.

Un ejemplo es el algoritmo Iterative Dichotomiser 3, o ID3 para abreviar, utilizado para construir un árbol de decisión.

La ganancia de información es precisamente la medida utilizada por ID3 para seleccionar el mejor atributo en cada paso del crecimiento del árbol.

– Página 58, Machine Learning, 1997.

La ganancia de información se calcula para cada variable del conjunto de datos. La variable que tiene la mayor ganancia de información se selecciona para dividir el conjunto de datos. Generalmente, una mayor ganancia indica una menor entropía o menos sorpresa.

Nótese que minimizar la entropía es equivalente a maximizar la ganancia de información…

– Página 547, Machine Learning: A Probabilistic Perspective, 2012.

El proceso se repite entonces en cada grupo creado, excluyendo la variable que ya fue elegida. Esto se detiene una vez que se alcanza una profundidad deseada para el árbol de decisión o no son posibles más divisiones.

El proceso de selección de un nuevo atributo y la partición de los ejemplos de entrenamiento se repite ahora para cada nodo descendiente no terminal, esta vez utilizando sólo los ejemplos de entrenamiento asociados a ese nodo. Los atributos que se han incorporado más arriba en el árbol se excluyen, de modo que cualquier atributo dado puede aparecer como máximo una vez a lo largo de cualquier camino a través del árbol.

– Página 60, Machine Learning, 1997.

La ganancia de información se puede utilizar como un criterio de partición en la mayoría de las implementaciones modernas de los árboles de decisión, como la implementación del algoritmo de Árbol de Clasificación y Regresión (CART) en la biblioteca de aprendizaje automático de scikit-learn Python en la clase DecisionTreeClassifier para la clasificación.

Esto se puede conseguir estableciendo el argumento del criterio como «entropía» al configurar el modelo; por ejemplo:

1
2
3
4

# ejemplo de árbol de decisión entrenado con ganancia de información
from sklearn.tree import DecisionTreeClassifier
model = sklearn.tree.DecisionTreeClassifier(criterion=’entropy’)

La ganancia de información también se puede utilizar para la selección de características antes del modelado.

Se trata de calcular la ganancia de información entre la variable objetivo y cada variable de entrada en el conjunto de datos de entrenamiento. El banco de trabajo de aprendizaje automático de Weka proporciona una implementación de la ganancia de información para la selección de características a través de la clase InfoGainAttributeEval.

En este contexto de selección de características, la ganancia de información puede denominarse «información mutua» y calcular la dependencia estadística entre dos variables. Un ejemplo de uso de la ganancia de información (información mutua) para la selección de características es la función de scikit-learn mutual_info_classif().

¿Qué es la información mutua?

La información mutua se calcula entre dos variables y mide la reducción de la incertidumbre para una variable dado un valor conocido de la otra variable.

Una cantidad llamada información mutua mide la cantidad de información que se puede obtener de una variable aleatoria dada otra.

– Página 310, Data Mining: Practical Machine Learning Tools and Techniques, 4ª edición, 2016.

La información mutua entre dos variables aleatorias X e Y puede enunciarse formalmente como sigue:

  • I(X ; Y) = H(X) – H(X | Y)

Donde I(X ; Y) es la información mutua para X e Y, H(X) es la entropía para X y H(X | Y) es la entropía condicional para X dado Y. El resultado tiene las unidades de bits.

La información mutua es una medida de dependencia o «dependencia mutua» entre dos variables aleatorias. Como tal, la medida es simétrica, lo que significa que I(X ; Y) = I(Y ; X).

Mide la reducción media de la incertidumbre sobre x que resulta de aprender el valor de y; o viceversa, la cantidad media de información que x transmite sobre y.

– Página 139, Teoría de la información, inferencia y algoritmos de aprendizaje, 2003.

La divergencia Kullback-Leibler, o KL, es una medida que calcula la diferencia entre dos distribuciones de probabilidad.

La información mutua también se puede calcular como la divergencia KL entre la distribución de probabilidad conjunta y el producto de las probabilidades marginales de cada variable.

Si las variables no son independientes, podemos hacernos una idea de si están «cerca» de serlo considerando la divergencia de Kullback-Leibler entre la distribución conjunta y el producto de las marginales, que se llama información mutua entre las variables

– Página 57, Pattern Recognition and Machine Learning, 2006.

Se puede enunciar formalmente de la siguiente manera:

  • I(X ; Y) = KL(p(X, Y) || p(X) * p(Y))

La información mutua es siempre mayor o igual a cero, donde cuanto mayor es el valor, mayor es la relación entre las dos variables. Si el resultado calculado es cero, entonces las variables son independientes.

La información mutua se utiliza a menudo como una forma general de un coeficiente de correlación, por ejemplo, una medida de la dependencia entre variables aleatorias.

También se utiliza como un aspecto en algunos algoritmos de aprendizaje automático. Un ejemplo común es el análisis de componentes independientes, o ICA para abreviar, que proporciona una proyección de componentes estadísticamente independientes de un conjunto de datos.

¿Cómo se relacionan la ganancia de información y la información mutua?

La información mutua y la ganancia de información son la misma cosa, aunque el contexto o el uso de la medida a menudo da lugar a los diferentes nombres.

Por ejemplo:

  • Efecto de las transformaciones a un conjunto de datos (árboles de decisión): Ganancia de información.
  • Dependencia entre variables (selección de características): Información mutua.

Nótese la similitud en la forma de calcular la información mutua y la forma de calcular la ganancia de información; son equivalentes:

  • I(X ; Y) = H(X) – H(X | Y)

y

  • IG(S, a) = H(S) – H(S | a)

Como tal, la información mutua se utiliza a veces como sinónimo de ganancia de información. Técnicamente, calculan la misma cantidad si se aplican a los mismos datos.

Podemos entender la relación entre ambas como que cuanto mayor sea la diferencia en las distribuciones de probabilidad conjunta y marginal (información mutua), mayor será la ganancia de información (ganancia de información).

Lectura adicional

Esta sección ofrece más recursos sobre el tema si se quiere profundizar.

Libros

  • Teoría de la información, inferencia y algoritmos de aprendizaje, 2003.
  • Aprendizaje automático: A Probabilistic Perspective, 2012.
  • Pattern Recognition and Machine Learning, 2006.
  • Machine Learning, 1997.
  • Data Mining: Practical Machine Learning Tools and Techniques, 4ª edición, 2016.

API

  • scipy.stats.entropy API

Artículos

  • Entropía (teoría de la información), Wikipedia.
  • Ganancia de información en árboles de decisión, Wikipedia.
  • Algoritmo ID3, Wikipedia.
  • Relación de ganancia de información, Wikipedia.
  • Información mutua, Wikipedia.

Resumen

En este post, has descubierto la ganancia de información y la información mutua en el aprendizaje automático.

Específicamente, has aprendido:

  • La ganancia de información es la reducción de la entropía o la sorpresa al transformar un conjunto de datos y se utiliza a menudo en el entrenamiento de árboles de decisión.
  • La ganancia de información se calcula comparando la entropía del conjunto de datos antes y después de una transformación.
  • La información mutua calcula la dependencia estadística entre dos variables y es el nombre que recibe la ganancia de información cuando se aplica a la selección de variables.

¿Tiene alguna pregunta?
Haz tus preguntas en los comentarios de abajo y haré todo lo posible por responderlas.

¡Descubre la probabilidad para el aprendizaje automático!

Desarrolla tu comprensión de la probabilidad

…con sólo unas pocas líneas de código python

Descubra cómo en mi nuevo Ebook:
Probabilidad para el Aprendizaje de Máquinas

Proporciona tutoriales de autoestudio y proyectos integrales sobre:
Teorema de Bayes, Optimización Bayesiana, Distribuciones, Máxima Verosimilitud, Entropía Cruzada, Calibración de Modelos
y mucho más…

Aproveche por fin la incertidumbre en sus proyectos

Olvídese de lo académico. Sólo resultados.Vea lo que hay dentro

Tweet Share Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada.