Traté de implementar una estimación numérica de la divergencia Kullback-Leibler para dos muestras. Para depurar la implementación, extraiga las muestras de dos distribuciones normales y .N ( 1 , 2 )
Para una estimación simple, generé dos histogramas e intenté aproximar numéricamente la integral. Me quedé atascado con el manejo de esas partes del histograma donde los contenedores de uno de los histogramas son cero, de modo que termino dividiendo por cero o el logaritmo de cero. ¿Cómo manejo este problema?
Me vino a la mente una pregunta relacionada: ¿Cómo calcular exactamente la divergencia KL entre dos distribuciones uniformes diferentes? ¿Tengo que restringir la integral a la unión del soporte de ambas distribuciones?
Respuestas:
La divergencia Kullback-Leibler se define como así que para calcular (estimar) esto a partir de datos empíricos necesitaríamos, tal vez, algunas estimaciones de las funciones de densidad p ( x ) , q ( x ) . Entonces, un punto de partida natural podría ser a través de la estimación de densidad (y después de eso, solo integración numérica). Qué tan bueno o estable sería un método así, no lo sé.
Pero primero su segunda pregunta, luego volveré a la primera. Digamos que y q son densidades uniformes en [ 0 , 1 ] y [ 0 , 10 ] , respectivamente. Entonces KL ( p | | q ) = log 10 mientras que KL ( q | | p ) es más difícil de definir, pero el único valor razonable para darle es ∞ , por lo que puedo ver, ya que implica integrar log ( 1) / /pag q [ 0 , 1 ] [ 0 , 10 ] KL( p | | q) = log10 KL( qEl | El | p) ∞ que podemos elegir interpretar como log ∞ . Estos resultados son razonables de la interpretación que doy enIntuition on the Kullback-Leibler (KL) DivergenceIniciar sesión( 1 / 0 ) Iniciar sesión∞
Volviendo a la pregunta principal. Se pregunta de una manera muy no paramétrica, y no se establecen suposiciones sobre las densidades. Probablemente se necesitan algunas suposiciones. Pero suponiendo que las dos densidades se propongan como modelos competitivos para el mismo fenómeno, probablemente podemos suponer que tienen la misma medida dominante: la divergencia KL entre una distribución de probabilidad continua y una discreta siempre sería infinita, por ejemplo. Un artículo que aborda esta pregunta es el siguiente: https://pdfs.semanticscholar.org/1fbd/31b690e078ce938f73f14462fceadc2748bf.pdf Proponen un método que no necesita estimación de densidad preliminar y analiza sus propiedades.
(Hay muchos otros documentos). Volveré y publicaré algunos detalles de ese documento, las ideas.
Algunas ideas de ese artículo, que trata sobre la estimación de la divergencia de KL con muestras iid de distribuciones absolutamente continuas. Muestro su propuesta para distribuciones unidimensionales, pero también dan una solución para vectores (usando la estimación de densidad de vecinos más cercana). Para pruebas, lea el periódico!
El código R para la versión de la función de distribución empírica que necesitamos es
tenga en cuenta que
rle
se utiliza para atender el caso con duplicados enx
.Entonces la estimación de la divergencia KL viene dada por
Luego muestro una pequeña simulación:
que proporciona el siguiente histograma, que muestra (una estimación) de la distribución muestral de este estimador:
A modo de comparación, calculamos la divergencia KL en este ejemplo mediante integración numérica:
hmm ... ¡la diferencia es tan grande que hay mucho aquí para investigar!
fuente
Ampliando un poco la respuesta de kjetil-b-halvorsen , y perdón por no comentar, no tengo la reputación:
LR <- function(x) dnorm(x,log=TRUE)-dt(x,5,log=TRUE) integrate(function(x) dnorm(x)*LR(x),lower=-Inf,upper=Inf)$value
Una vez que se realizan esas dos correcciones, los resultados parecen más realistas.
fuente