7 votos

Algoritmo de cálculo de la información mutua entre variables continuas

Intento utilizar la noción de información mutua entre variables continuas en un programa informático. https://en.wikipedia.org/wiki/Mutual_information

Las entradas del algoritmo serían dos listas l1 y l2 de n números reales y la salida sería un número real m que representa la información mutua entre los valores de l1 y l2.

Pero no sé cómo puedo traducir esa fórmula en un algoritmo. ¿Pueden ayudarme?

Saludos cordiales.

12voto

user3658307 Puntos 33

Estimar la información mutua con rapidez y precisión no es trivial. Te recomiendo que utilices una biblioteca o tendrás que buscar en la bibliografía (por ejemplo, véase Kraskov et al, 2004, Estimación de la información mutua ).


Sin embargo, se puede obtener una estimación ingenuamente de la siguiente manera. Se habla de dos listas de valores, $X$ y $Y$ por lo que se puede estimar el discreto en lugar de información mutua continua: $$ I(X,Y) = \sum_{x\in X}\sum_{y\in Y} P(x,y) \log\left( \frac{P(x,y)}{P(x)\,P(y)} \right) $$ donde $x\in X$ significa $x$ recorre la gama de $X$ . La fórmula sólo requiere que sepas $P(x)$ , $P(y)$ y $P(x,y)$ que puede estimar a partir de los datos (por ejemplo, estimación de la densidad del núcleo o ajuste de un modelo de mezcla gaussiano).

Quizá algo mejor (e igual de fácil con bibliotecas) sea (1) determinar las densidades conjuntas y marginales $P(x)$ , $P(y)$ y $P(x,y)$ mediante la estimación de la densidad (por ejemplo, en Python, véase scipy o sklearn ) y (2) integrar numéricamente las funciones de densidad resultantes (por ejemplo, en scipy ) mediante la fórmula continua: $$ I(X,Y) = \int_{Y}\int_{X} P(x,y) \log\left( \frac{P(x,y)}{P(x)\,P(y)} \right)dx\,dy $$ por lo que se reduce a ejecutar un algoritmo de estimación de la densidad, seguido de un algoritmo de integración numérica.

También puede consultar esta pregunta que calcula primero la información mutua mediante la estimación de la densidad (utilizando histogramas) y luego utiliza la representación de la información mutua mediante Entropía de Shannon es decir $$ I(X,Y) = H(X) - H(Y) - H(X,Y) $$ donde $H$ es la entropía de la información, para terminar el cálculo en su lugar.


(1/11/19) Dado que esto se ha vuelto de mayor importancia en ciertos campos (IA, ciencia de datos y aprendizaje automático, por ejemplo), solo mencionaré algo de la literatura en esas áreas que usa/requiere estimación de información mutua.

Por ejemplo, infoGAN y HFVAE utilizan estimaciones Monte Carlo de límites de la información y/o entropía (también llamadas estimaciones de información variacional). Véase también MINA y InfoMax profundo . Obsérvese que estos métodos (y los métodos que citan o son citados por ellos) suelen preocuparse más por optimización información mutua, no sólo estimarla, lo que, por supuesto, tiene requisitos diferentes.

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