Come calcolare la divergenza / distanza di Kullback-Leibler?


10

Ho tre set di dati X, Y e Z. Ogni set di dati definisce la frequenza di un evento che si verifica. Per esempio:

Set di dati X: E1: 4, E2: 0, E3: 10, E4: 5, E5: 0, E6: 0 e così via.
Set di dati Y: E1: 2, E2: 3, E3: 7, E4: 6, E5: 0, E6: 0 e così via ...
Set di dati Z: E1: 0, E2: 4, E3: 8, E4: 4, E5: 1, E6: 0 e così via ...

Devo trovare la divergenza KL tra X e Y; e tra X e Z. Come puoi vedere per alcuni degli eventi ci saranno valori 0 e diversi da zero. Per alcuni degli eventi tutti e tre i set di dati sono 0.

Gradirei se qualcuno potesse aiutarmi a trovare la divergenza KL per questo. Non sono molto statistico, quindi non ho molta idea. I tutorial che stavo guardando online erano un po 'troppo complessi per la mia comprensione.

Risposte:


11

Per rispondere alla tua domanda, dovremmo ricordare la definizione di divergenza KL :

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

Prima di tutto devi passare da ciò che hai alle distribuzioni di probabilità. Per questo dovresti normalizzare i tuoi dati in modo tale che si sommino a uno:

Xi:=Xii=1NXi ; ; Yi:=Yii=1NYiZi:=Zii=1NZi

Quindi, per valori discreti abbiamo un presupposto molto importante che è necessario per valutare la divergenza di KL e che viene spesso violato:

Xi=0 dovrebbe implicare .Yi=0

Nel caso in cui sia che equivalgano a zero, si presume che sia zero (come valore limite).XiYiln(Yi/Xi)Yi

Nel tuo set di dati significa che puoi trovare , ma non ad esempio (a causa della seconda voce).DKL(X||Y)DKL(Y||X)

Quello che potrei consigliare dal punto di vista pratico è:

o rendere i tuoi eventi "più grandi" in modo da avere meno zeri

o ottenere più dati, in modo da coprire anche eventi rari con almeno una voce.

Se non puoi utilizzare nessuno dei consigli sopra indicati, probabilmente dovrai trovare un'altra metrica tra le distribuzioni. Per esempio,

Informazioni reciproche , definite come . Dove è una probabilità congiunta di due eventi.p(Xi,Yi)I(X,Y)=i=1Nj=1Np(Xi,Yj)ln(p(Xi,Yj)p(Xi)p(Yj))p(Xi,Yi)

Spero che possa essere d'aiuto.


0

inserisci qui la descrizione dell'immagine

Potresti voler impostare \ epsilon su un valore molto piccolo 0.00001 (diciamo) e andare avanti con valori diversi da zero per tutte le probabilità e calcolare i punteggi KL.

Per favore fatemi sapere se funziona.


2
LATEX
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.