21 votos

¿Cómo calcular la divergencia KL cuando la PMF contiene 0s?

Desde el Página de Wikipedia en la divergencia de Kullback-Leibler, la forma de calcular esta métrica es utilizar la siguiente fórmula:

enter image description here

En mi opinión, se trata de calcular los PMF de dos conjuntos de muestras y, a continuación, utilizar la fórmula anterior para calcular la divergencia KL. Sin embargo, no estoy muy seguro de entenderlo. Digamos que tengo el siguiente conjunto de valores:

0 0 0 0 0 1 1 0 0 0 0 0 1 2 0 0 0 0 0 20 0 0 0

Intento calcular la divergencia KL para un tamaño de ventana móvil de 7. Así que empiezo eligiendo el tamaño de la bandeja para mi histograma como 1 y los valores (máx, mín) como (20, 0) a partir de todo el conjunto de datos. Así que cuando tengo la ventana deslizante de la siguiente manera:

0 0 0 0 0 1 1 0 0 0 0 0 1 2 0 0 0 0 0 20 0 0 0
|-----------|
              |-----------|

Calculo los PMFs a través de estas dos ventanas deslizantes como:

0 0 0 0 0 1: 0.81818182,  0.18181818 0 0 ... 0
0 0 0 0 1 2: 0.66666667,  0.16666667,  0.16666667 0 0 ... 0

Ambos PMF cumplen la primera condición de la página Wiki:

La divergencia K-L sólo está definida si P y Q suman 1 y si Q(i) > 0 para cualquier i tal que P(i) > 0.

pero fallando con la segunda condición. Alguien puede decirme dónde me equivoco?

25voto

jimg Puntos 459

Daré una respuesta corta y otra larga.

La respuesta corta es que la divergencia KL en multinomios se define cuando sólo tienen entradas distintas de cero. Cuando las entradas son cero, hay dos opciones. (1) Suavizar las distribuciones de alguna manera, por ejemplo con un Bayesiano a priori, o (similarmente) tomando la combinación convexa de la observación con alguna distribución válida (distinta de cero). (El enfoque bayesiano estándar consiste en utilizar una prioridad Dirichlet, lo que equivale a tratar cada entrada como una fracción $n_i / m$ donde $m=\sum_i n_i$ y $n_i$ deberían ser enteros (pero con los datos que nos proporcione esto puede complicarse), y sustituyendo estas fracciones por, por ejemplo $(n_i + 1) / (m+|x|)$ donde $|x|$ es el número de átomos de la distribución discreta; la opción de suavizado "combinación convexa" es similar, si $x$ es su observación y $\alpha \in (0,1]$ devolución $\alpha U_{|x|} + (1-\alpha)x$ donde $U_{|X|}$ es la distribución uniforme en $|x|$ puntos). (2) Emplear una heurística que deseche todos los valores que no tengan sentido, como se sugiere más arriba. Aunque reconozco que (2) es una convención, en realidad no encaja con la naturaleza de estas distribuciones, como explicaré momentáneamente.

La respuesta más larga es la razón matemática por la que la divergencia KL no puede manejar estos ceros, que requiere información sobre las distribuciones de la familia exponencial (multinomial, gaussiana, etc.). Cada distribución de la familia exponencial se define en relación con alguna medida base, y debe ser distinta de cero en todas partes en esa medida base: esto es cierto con multinomios, es cierto con gaussianos (matriz de covarianza debe ser de rango completo), etc. Esto se debe a que estas distribuciones son la solución a un problema de optimización que se rompe en presencia de esos ceros. En cualquier caso, lo que tiene que ocurrir es que la medida relativa de base sea la "más ajustada posible": en el caso de los multinomios, es la distribución uniforme sobre las entradas no nulas, y en el caso de las gaussianas, es la medida de Lebesgue restringida al subespacio afín correspondiente al eigespacio de la covarianza proporcionada, desplazada por la media proporcionada. La divergencia KL (escrita como una integral) sólo tiene sentido si ambas distribuciones son relativas a la misma medida de "ajuste más estricto".

En resumen, la invalidez de la fórmula en presencia de ceros no es sólo un truco desafortunado, es un problema profundo íntimamente ligado a cómo se comportan estas distribuciones. Por tanto, la solución suavizadora/bayesiana está mejor motivada: empuja las distribuciones hacia la validez. Pero mucha gente opta simplemente por desechar esos valores (es decir, borrando $0\ln(0)$ ou $a\ln(a/0)$ y escribir $0$ en su lugar).

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