¿Cómo calcular la distancia / divergencia de Kullback-Leibler?

10

Tengo tres conjuntos de datos X, Y y Z. Cada conjunto de datos define la frecuencia de un evento. Por ejemplo:

Conjunto de datos X: E1: 4, E2: 0, E3: 10, E4: 5, E5: 0, E6: 0, etc.
Conjunto de datos Y: E1: 2, E2: 3, E3: 7, E4: 6, E5: 0, E6: 0, etc.
Conjunto de datos Z: E1: 0, E2: 4, E3: 8, E4: 4, E5: 1, E6: 0, etc.

Tengo que encontrar KL-divergencia entre X e Y; y entre X y Z. Como puede ver para algunos de los eventos, habrá 0 y valores distintos de cero. Para algunos de los eventos, los tres conjuntos de datos son 0.

Agradecería que alguien pueda ayudarme a encontrar la divergencia de KL para esto. No soy muy experto en estadística, así que no tengo mucha idea. Los tutoriales que estaba viendo en línea eran demasiado complejos para mi comprensión.

PS1
fuente

Respuestas:

11

Para responder a su pregunta, debemos recordar la definición de divergencia KL :

DKL(Y||X)=i=1Nln(YiXi)Yi

En primer lugar, debe pasar de lo que tiene a las distribuciones de probabilidad. Para esto, debe normalizar sus datos de modo que sumen uno:

Xi:=Xii=1NXiYi:=Yii=1NYiZi:=Zii=1NZi

Luego, para valores discretos tenemos una suposición muy importante que se necesita para evaluar la divergencia de KL y que a menudo se viola:

Xi=0Yi=0

XiYiln(Yi/Xi)Yi

DKL(X||Y)DKL(Y||X)

Lo que podría aconsejar desde el punto de vista práctico es:

o haga que sus eventos sean "más grandes" para que tenga menos ceros

u obtener más datos, de modo que cubra incluso eventos raros con al menos una entrada.

Si no puede utilizar ninguno de los consejos anteriores, probablemente necesitará encontrar otra métrica entre las distribuciones. Por ejemplo,

I(X,Y)=i=1Nj=1Np(Xi,Yj)ln(p(Xi,Yj)p(Xi)p(Yj))p(Xi,Yi)

Espero que ayude.

Dmitry Laptev
fuente
0

ingrese la descripción de la imagen aquí

Es posible que desee establecer \ epsilon en un valor muy pequeño 0.00001 (digamos) y seguir con valores distintos de cero para todas las probabilidades y calcular las puntuaciones KL.

Por favor, avíseme si esto funciona.

Kalidas Y
fuente
2
LATEX