¿Qué es "entropía y ganancia de información"?


Estoy leyendo este libro (NLTK) y es confuso. La entropía se define como :

La entropía es la suma de la probabilidad de cada etiqueta multiplicado por la probabilidad logarítmica de esa misma etiqueta

¿Cómo puedo aplicar entropía y entropía máxima en términos de minería de texto? ¿Puede alguien darme un ejemplo sencillo (visual)?

Author: rayryeng, 2009-12-07

7 answers

Asumo que la entropía fue mencionada en el contexto de la construcción árboles de decisión.

Para ilustrar, imagine la tarea de aprender para clasificar los nombres de pila en grupos masculinos/femeninos. A eso se le da una lista de nombres, cada uno etiquetado con m o f, queremos aprender un modelo que se ajuste a los datos y se pueda usar para predecir el género de un nuevo nombre invisible.

name       gender
-----------------        Now we want to predict 
Ashley        f              the gender of "Amro" (my name)
Brian         m
Caroline      f
David         m

El Primer paso es decidir ¿qué características de los datos son relevantes para la clase objetivo que queremos predecir. Algunas características de ejemplo incluyen: primera / última letra, longitud, número de vocales, termina con una vocal, etc.. Así que después de la extracción de características, nuestros datos se ven como:

# name    ends-vowel  num-vowels   length   gender
# ------------------------------------------------
Ashley        1         3           6        f
Brian         0         2           5        m
Caroline      1         4           8        f
David         0         2           5        m

El objetivo es construir un árbol de decisiones. Un ejemplo de un árbol sería:

length<7
|   num-vowels<3: male
|   num-vowels>=3
|   |   ends-vowel=1: female
|   |   ends-vowel=0: male
length>=7
|   length=5: male

Básicamente cada nodo representa una prueba realizada en un solo atributo, y vamos a la izquierda o a la derecha dependiendo de el resultado de la prueba. Seguimos atravesando el árbol hasta llegar a un nodo hoja que contiene la predicción de clase (m o f)

Así que si ejecutamos el nombre Amro por este árbol, comenzamos probando " es la longitud" y la respuesta es , así que bajamos por esa rama. Siguiendo la rama, la siguiente prueba "es el número de vocales" nuevamente se evalúa como verdadero. Esto conduce a un nodo hoja etiquetado m, y por lo tanto la predicción es macho (que resulta que soy, por lo que el árbol predijo el resultado correctamente ).

El árbol de decisión está construido de arriba hacia abajo, pero la pregunta es ¿cómo elegir qué atributo dividir en cada nodo? La respuesta es encontrar la característica que mejor divide la clase objetivo en los nodos hijos más puros posibles (es decir: nodos que no contienen una mezcla de ambos, masculino y femenino, nodos más bien puros con una sola clase).

Esta medida de la pureza se llama la información. Representa la esperada cantidad de información que sería necesaria para especificar si una nueva instancia (nombre) debe ser clasificada hombre o mujer, dado el ejemplo que alcanzó el nodo. Lo calculamos basado en el número de clases masculinas y femeninas en el nodo.

La entropía por otro lado es una medida de impureza (lo contrario). Se define para un clase binaria con valores a/b as:

Entropy = - p(a)*log(p(a)) - p(b)*log(p(b))

Esta función de entropía binaria se representa en la siguiente figura (la variable aleatoria puede tomar uno de dos valores). Alcanza su máximo cuando la probabilidad es p=1/2, lo que significa que p(X=a)=0.5 o de manera similarp(X=b)=0.5 tiene una probabilidad del 50%/50% de ser a o b (la incertidumbre está en un máximo). La función de entropía está en cero mínimo cuando la probabilidad es p=1 o p=0 con total certeza (p(X=a)=1 o p(X=a)=0 respectivamente, este último implica p(X=b)=1).

https://en.wikipedia.org/wiki/File:Binary_entropy_plot.svg

Por supuesto, la definición de entropía puede generalizarse para una variable aleatoria discreta X con N resultados (no solo dos):

entropía

(el log en la fórmula generalmente se toma como el logaritmo a la base 2)


Volviendo a nuestra tarea de clasificación de nombres, veamos un ejemplo. Imagine que en algún momento durante el proceso de construcción del árbol, estábamos considerando la siguiente división:

     ends-vowel
      [9m,5f]          <--- the [..,..] notation represents the class
    /          \            distribution of instances that reached a node
   =1          =0
 -------     -------
 [3m,4f]     [6m,1f]

Como puedes ver, antes de la división teníamos 9 machos y 5 hembras, es decir, P(m)=9/14 y P(f)=5/14. Según la definición de entropía:

Entropy_before = - (5/14)*log2(5/14) - (9/14)*log2(9/14) = 0.9403

A continuación lo comparamos con la entropía calculada después de considerar la división observando dos ramas secundarias. En la rama izquierda de ends-vowel=1, tenemos:

Entropy_left = - (3/7)*log2(3/7) - (4/7)*log2(4/7) = 0.9852

Y la rama derecha de ends-vowel=0, tenemos:

Entropy_right = - (6/7)*log2(6/7) - (1/7)*log2(1/7) = 0.5917

Combinamos las entropías izquierda / derecha usando el número de instancias hacia abajo cada rama como factor de peso (7 instancias fueron a la izquierda, y 7 instancias fueron a la derecha), y obtener la entropía final después de la división:

Entropy_after = 7/14*Entropy_left + 7/14*Entropy_right = 0.7885

Ahora comparando la entropía antes y después de la división, obtenemos una medida de obtención de información, o cuánta información ganamos al hacer la división usando esa característica en particular:

Information_Gain = Entropy_before - Entropy_after = 0.1518

Puede interpretar el cálculo anterior de la siguiente manera: al hacer la división con la característica end-vowels, estábamos capaz de reducir la incertidumbre en el resultado de la predicción del subárbol en una pequeña cantidad de 0,1518 (medido en bits como unidades de información).

En cada nodo del árbol, este cálculo se realiza para cada entidad, y la entidad con la mayor ganancia de información se elige para la división de una manera codiciosa (favoreciendo así las entidades que producen divisiones puras con baja incertidumbre/entropía). Este proceso se aplica recursivamente desde el nodo raíz hacia abajo, y se detiene cuando un nodo hoja contiene instancias que tienen la misma clase (no es necesario dividirlo más).

Tenga en cuenta que me salté algunos detalles que están más allá del alcance de este post, incluyendo cómo manejar características numéricas, valores faltantes, sobreajustar y podar árboles, etc..

 975
Author: Amro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-04 13:01:23

Para empezar, sería mejor entender the measure of information.

¿Cómo hacemos measure la información?

Cuando sucede algo poco probable, decimos que es una gran noticia. Además, cuando decimos algo predecible, no es realmente interesante. Así que para cuantificar esto interesting-ness, la función debe satisfacer

  • si la probabilidad del evento es 1 (predecible), entonces la función da 0
  • si la probabilidad del evento es cercana a 0, entonces la función debe dar alta número
  • si la probabilidad 0.5 eventos sucede da one bit de información.

Una medida natural que satisface las restricciones es

I(X) = -log_2(p)

Donde p es la probabilidad del evento X. Y la unidad está en bit, el mismo bit que usa la computadora. 0 ó 1.

Ejemplo 1

Lanzamiento justo de la moneda:

¿Cuánta información podemos obtener de un lanzamiento de moneda?

Respuesta: -log(p) = -log(1/2) = 1 (bit)

Ejemplo 2

Si un meteorito golpea la Tierra mañana, p=2^{-22} entonces podemos obtener 22 bits de información.

Si el Sol sale mañana, p ~ 1 entonces es 0 bit de información.

Entropía

Así que si tomamos la expectativa en el interesting-ness de un evento Y, entonces es la entropía. es decir, la entropía es un valor esperado de lo interesante de un evento.

H(Y) = E[ I(Y)]

Más formalmente, la entropía es el número esperado de bits de un evento.

Ejemplo

Y = 1: ocurre un evento X con probabilidad p

Y = 0: un evento X no ocurre con probabilidad 1-p

H(Y) = E[I(Y)] = p I(Y==1) + (1-p) I(Y==0) 
     = - p log p - (1-p) log (1-p)

Log base 2 para todos los logs.

 37
Author: VforVitamin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-17 04:37:04

No puedo darte gráficos, pero tal vez pueda darte una explicación clara.

Supongamos que tenemos un canal de información, como una luz que parpadea una vez al día, ya sea roja o verde. ¿Cuánta información transmite? La primera conjetura podría ser un poco por día. Pero ¿qué pasa si añadimos azul, de modo que el remitente tiene tres opciones? Nos gustaría tener una medida de información que pueda manejar cosas que no sean potencias de dos, pero aún así ser aditiva (la forma en que se multiplica el número de posibles mensajes por dos añade un bit). Podríamos hacer esto tomando registro2(número de mensajes posibles), pero resulta que hay una forma más general.

Supongamos que volvemos a rojo/verde, pero la bombilla roja se ha quemado (esto es de conocimiento común) por lo que la lámpara siempre debe parpadear en verde. El canal ahora es inútil, sabemos cuál será el próximo flash así que los flashes no transmiten información, ni noticias. Ahora reparamos el bulbo pero imponemos una regla que el bulbo rojo puede no parpadear dos veces seguidas. Cuando la lámpara parpadea en rojo, sabemos cuál será el próximo flash. Si intenta enviar un flujo de bits por este canal, encontrará que debe codificarlo con más flashes de los que tiene bits (50% más, de hecho). Y si quieres describir una secuencia de flashes, puedes hacerlo con menos bits. Lo mismo se aplica si cada destello es independiente (sin contexto), pero los destellos verdes son más comunes que los rojos: cuanto más sesgada sea la probabilidad, menos bits necesitará para describir el secuencia, y la menor información que contiene, todo el camino hasta el límite de todo verde, bombilla quemada.

Resulta que hay una manera de medir la cantidad de información en una señal, basada en las probabilidades de los diferentes símbolos. Si la probabilidad de recibir el símbolo x i es p i , entonces considere la cantidad

-log pi

Cuanto menor sea p i, mayor será este valor. Si xi se vuelve el doble de improbable, este valor aumenta en una cantidad fija (log (2)). Esto debería recordarte a agregar un poco a un mensaje.

Si no sabemos cuál será el símbolo (pero conocemos las probabilidades) entonces podemos calcular el promedio de este valor, cuánto obtendremos, sumando las diferentes posibilidades:

I = -Σ pi log(pi)

Este es el contenido de información en un flash.

Red bulb burnt out: pred = 0, pgreen=1, I = -(0 + 0)  = 0
Red and green equiprobable: pred = 1/2, pgreen = 1/2, I = -(2 * 1/2 * log(1/2)) = log(2)
Three colors, equiprobable: pi=1/3, I = -(3 * 1/3 * log(1/3)) = log(3)
Green and red, green twice as likely: pred=1/3, pgreen=2/3, I = -(1/3 log(1/3) + 2/3 log(2/3)) = log(3) - 2/3 log(2)

Este es el contenido de información, o entropía, del mensaje. Es máxima cuando los diferentes símbolos son equiprobables. Si eres físico utilizas el logaritmo natural, si eres un informático utilizas logaritmo2 y conseguir pedacitos.

 20
Author: Beta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-07 13:45:44

Realmente te recomiendo que leas sobre Teoría de la Información, métodos bayesianos y MaxEnt. El lugar para comenzar es este libro (disponible gratuitamente en línea) de David Mackay:

Http://www.inference.phy.cam.ac.uk/mackay/itila /

Esos métodos de inferencia son realmente mucho más generales que la minería de texto y realmente no puedo idear cómo uno aprendería a aplicar esto a la PNL sin aprender algunos de los conceptos básicos generales contenidos en este libro u otros libros introductorios sobre la máquina Aprendizaje y métodos bayesianos MaxEnt.

La conexión entre la entropía y la teoría de la probabilidad con el procesamiento y almacenamiento de la información es muy, muy profunda. Para dar una muestra de ello, hay un teorema debido a Shannon que establece que la cantidad máxima de información que puede pasar sin error a través de un canal de comunicación ruidoso es igual a la entropía del proceso de ruido. También hay un teorema que conecta cuánto se puede comprimir una pieza de datos para ocupar el mínimo posible memoria en su ordenador a la entropía del proceso que generó los datos.

No creo que sea realmente necesario que vayas a aprender sobre todos esos teoremas sobre la teoría de la comunicación, pero no es posible aprender esto sin aprender los conceptos básicos sobre qué es la entropía, cómo se calcula, cuál es su relación con la información y la inferencia, etc...

 8
Author: Rafael S. Calsaverini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-14 17:42:55

Cuando estaba implementando un algoritmo para calcular la entropía de una imagen encontré estos enlaces, ver aquí y aquí.

Este es el pseudo-código que usé, necesitarás adaptarlo para trabajar con texto en lugar de imágenes, pero los principios deben ser los mismos.

//Loop over image array elements and count occurrences of each possible
//pixel to pixel difference value. Store these values in prob_array
for j = 0, ysize-1 do $
    for i = 0, xsize-2 do begin
       diff = array(i+1,j) - array(i,j)
       if diff lt (array_size+1)/2 and diff gt -(array_size+1)/2 then begin
            prob_array(diff+(array_size-1)/2) = prob_array(diff+(array_size-1)/2) + 1
       endif
     endfor

//Convert values in prob_array to probabilities and compute entropy
n = total(prob_array)

entrop = 0
for i = 0, array_size-1 do begin
    prob_array(i) = prob_array(i)/n

    //Base 2 log of x is Ln(x)/Ln(2). Take Ln of array element
    //here and divide final sum by Ln(2)
    if prob_array(i) ne 0 then begin
        entrop = entrop - prob_array(i)*alog(prob_array(i))
    endif
endfor

entrop = entrop/alog(2)

Obtuve este código de alguna parte, pero no puedo desenterrar el enlace.

 4
Author: Matt Warren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-07 13:35:46

Informalmente

La entropía es la disponibilidad de información o conocimiento, la falta de información conduce a dificultades en la predicción del futuro que es alta entropía (predicción de la palabra siguiente en la minería de texto) y la disponibilidad de información/conocimiento nos ayudará a una predicción más realista del futuro (baja entropía).

La información relevante de cualquier tipo reducirá la entropía y nos ayuda a predecir un futuro más realista, que la información puede ser la palabra "carne" está presente en la frase o la palabra "la carne" no existe. Esto se llama Ganancia de Información


Formalmente

La entropía es la falta de orden de predicabilidad

 2
Author: Waseem Ahmad Naeem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-01 17:26:59

Mientras está leyendo un libro sobre NLTK, sería interesante que lea sobre el módulo Clasificador MaxEnt http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.maxent

Para la clasificación de minería de texto, los pasos podrían ser: preprocesamiento (tokenización, vaporización, selección de características con ganancia de Información ...), transformación a numérico (frecuencia o TF-IDF) (creo que este es el paso clave a entender cuando se usa texto como entrada a un algoritmo que solo acepta numérica) y luego clasificar con MaxEnt, seguro que esto es solo un ejemplo.

 0
Author: Paulo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-26 12:33:51