Calcola in pratica la divergenza di Kullback-Leibler?


15

Sto usando KL Divergence come misura di dissomiglianza tra 2 p.m.f. P e Q .

=-P(Xi)ln(Q(Xi))+P(Xi)ln(P(Xi))

DKL(P||Q)=i=1Nln(PiQi)Pi
=P(Xi)ln(Q(Xi))+P(Xi)ln(P(Xi))

Se allora possiamo facilmente calcolare che P ( X i ) l n ( Q ( X i ) ) = 0 P ( X i ) l n ( P ( X i ) ) = 0

P(Xi)=0
P(Xi)ln(Q(Xi))=0
P(Xi)ln(P(Xi))=0

P(Xi)0
Q(Xi)=0
P(Xi)ln(Q(Xi))

P(Xi)!=0P(Xi)0

Q(Xi)=0XiQ

@Matthew Grazie, corretto. Ho seguito la mia abitudine di programmazione per errore.
smwikipedia,

Q(Xi)=0XiPQ sullo stesso insieme di risultati e aggiungere un piccolo pseudo conteggio , diciamo 0,001, per i risultati non mostrati. Può evitare le probabilità a valore zero. Ma non sono sicuro se ci siano effetti collaterali.
smwikipedia,

Risposte:


15

Non puoi e non lo fai. Immagina di avere una variabile casuale di distribuzione di probabilità Q. Ma il tuo amico Bob pensa che il risultato provenga dalla distribuzione di probabilità P. Ha costruito una codifica ottimale, che minimizza il numero di bit previsti che dovrà usare per dirti il risultato. Ma dal momento che ha costruito la codifica da P e non da Q, i suoi codici saranno più lunghi del necessario. La divergenza KL misura quanto più a lungo saranno i codici.

Ora diciamo che ha una moneta e vuole dirti la sequenza dei risultati che ottiene. Poiché la testa e la coda sono ugualmente probabili, dà loro entrambi i codici a 1 bit. 0 per la testa, 1 per la coda. Se ottiene coda coda testa coda, può inviare 1 1 0 1. Ora, se la sua moneta atterra sul bordo, non può dirtelo! Nessun codice che ti invia funzionerebbe. A questo punto la divergenza di KL si rompe.

Poiché la divergenza di KL si rompe, dovrai usare un'altra misura o altre distribuzioni di probabilità. Quello che dovresti fare dipende davvero da quello che vuoi. Perché stai confrontando le distribuzioni di probabilità? Da dove vengono le tue distribuzioni di probabilità, sono stimate dai dati?

Dici che le tue distribuzioni di probabilità provengono da documenti in linguaggio naturale in qualche modo e vuoi confrontare coppie di categorie.

Innanzitutto, consiglierei una misura di correlazione simmetrica. Per questa applicazione sembra che A sia simile a B come B è simile ad A.

Hai provato la misura della somiglianza del coseno? È abbastanza comune nella PNL.

Se vuoi rimanere con KL, una cosa che potresti fare è stimare una funzione di probabilità da entrambi i documenti e quindi vedere quanti bit extra avresti bisogno in media per entrambi i documenti. Cioè (P || (P + Q) / 2 + Q || (P + Q) / 2) / 2


Grande spiegazione ma un po 'confusa: il modo in cui descrivi il primo paragrafo, non è KL (Q || P)?
Jurgen,

8

In pratica, ho riscontrato anche questo problema. In questo caso, ho scoperto che la sostituzione del valore di 0 con un numero molto piccolo può causare problemi. A seconda del valore utilizzato, verrà introdotto un "bias" nel valore KL. Se si utilizza il valore KL per il test delle ipotesi o per altri usi che comportano una soglia, questo piccolo valore può influenzare i risultati. Ho scoperto che il modo più efficace per affrontarlo è considerare il calcolo del KL solo su uno spazio di ipotesi coerente X_i in cui ENTRAMBI P e Q sono diversi da zero. Fondamentalmente, questo limita il dominio del KL a un dominio in cui entrambi sono definiti e ti tiene fuori dai guai quando usi il KL per eseguire test di ipotesi.


Grazie. È un suggerimento interessante. Fondamentalmente, sta anche cercando di basare P e Q sullo stesso insieme di risultati. Ci proverò.
smwikipedia,

Se calcolo KL sul sottoinsieme di dati in cui sia P che Q sono diversi da zero, devo ri-normalizzare P e Q su quel sottoinsieme? O semplicemente utilizzare il valore di probabilità originale? Penso che dovrei. Altrimenti, P e Q non sono ancora sulla stessa base.
smwikipedia,

Ho appena provato con il tuo suggerimento. P distribuisce oltre 10K risultati e Q distribuisce anche oltre 10K risultati. Ma P e Q hanno solo risultati 3K in comune. Se uso solo i risultati 3K comuni per stimare la differenza tra P e Q, non credo sia ragionevole. Perché stiamo ignorando molte cose. E a proposito, il risultato con questo approccio è abbastanza diverso da quello che ottengo aggiungendo un piccolo numero (o pseudo conteggio).
smwikipedia,

Aggiungi un po 'di contesto, sto lavorando a un esperimento di PNL. Ho diverse categorie di documenti e voglio dire quanto sono vicine ciascuna coppia di categorie.
smwikipedia,

5

Qi=0iQiQiQP . Se l'approssimazione prevede 0 probabilità per un evento che ha in realtà una probabilità postiva, allora sperimenterai una sorpresa infinita una percentuale del tempo e quindi una sorpresa infinita in media.

La soluzione è non consentire mai 0 o 1 probabilità nelle distribuzioni stimate. Questo di solito è ottenuto da una qualche forma di levigatura come la levigatura Good-Turing, la levigatura di Dirichlet o la levigatura di Laplace.

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.