Divergenza di Kullback-Leibler tra due distribuzioni gamma


15

Scegliere di parametrizzare la distribuzione gamma con il pdf La divergenza di Kullback-Leibler tra e è data da [1] comeΓ(b,c)g(x;b,c)=1Γ(c)xc1bcex/bΓ(bq,cq)Γ(bp,cp)

KLGa(bq,cq;bp,cp)=(cq1)Ψ(cq)logbqcqlogΓ(cq)+logΓ(cp)+cplogbp(cp1)(Ψ(cq)+logbq)+bqcqbp

Immagino che Ψ(x):=Γ(x)/Γ(x) sia la funzione digamma .

Questo è dato senza derivazione. Non riesco a trovare alcun riferimento che ne derivi. Qualsiasi aiuto? Un buon riferimento sarebbe sufficiente. La parte difficile è l'integrazione di con una gamma pdf.logx

[1] Densità WD Penny, KL-Divergences di Normal, Gamma, Dirichlet e Wishart , disponibile su: www.fil.ion.ucl.ac.uk/~wpenny/publications/densities.ps


2
Prendendo la derivata della pdf rispetto al c introduce il fattore di log(x) che desideri: è per questo che digamma presenta.
whuber

Se ti capita di imbatterti in Pierre Baldi e Laurent Itti (2010) "Di frammenti: una teoria bayesiana della sorpresa con applicazioni all'attenzione" Neural Networks 23: 649-666, troverai che l'Equazione 73 fornisce una divergenza KL tra due pdf gamma. Fai attenzione, tuttavia, sembra che la formula sia stampata male.
Clarinet,

Sto cercando una soluzione per lo stesso problema e trovare questo uno è utile.
Yi Yang,

Risposte:


15

La divergenza KL è una differenza di integrali del modulo

$$ \ eqalign {I (a, b, c, d) & = \ int_0 ^ {\ infty} \ log \ left (\ frac {e ^ {- x / a} x ^ {b-1}} {a ^ b \ Gamma (b)} \ right) \ frac {e ^ {- x / c} x ^ {d-1}} {c ^ d \ Gamma (d)} dx \

& = - \ frac {1} {a} \ int_0 ^ \ infty \ frac {x ^ de ^ {- x / c}} {c ^ d \ Gamma (d)} \, dx - \ log (a ^ b \ Gamma (b)) \ ​​int_0 ^ \ infty \ frac {e ^ {- x / c} x ^ {d-1}} {c ^ d \ Gamma (d)} \, dx \ & \ quad + (b- 1) \ int_0 ^ \ infty \ log (x) \ frac {e ^ {- x / c} x ^ {d-1}} {c ^ d \ Gamma (d)} \, dx \

& = - \ frac {cd} {a} - \ log (a ^ b \ Gamma (b)) + (b-1) \ int_0 ^ \ infty \ log (x) \ frac {e ^ {- x / c } x ^ {d-1}} {c ^ d \ Gamma (d)} \, dx} $$

Non ci resta che trattare l'integrale della mano destra, che si ottiene osservando

dΓ(d)=d0ex/cxd1cddx=d0ex/c(x/c)d1cdx=0ex/cxd1cdlogxcdx=0log(x)ex/cxd1cddxlog(c)Γ(d).

da cui

b1Γ(d)0log(x)ex/c(x/c)d1dx=(b1)Γ(d)Γ(d)+(b1)log(c).

Collegare ai rendimenti precedenti

I(a,b,c,d)=cdalog(abΓ(b))+(b1)Γ(d)Γ(d)+(b1)log(c).

La divergenza KL tra e Γ ( a , b ) è uguale a I ( c , d , c , d ) - I ( a , b , c , d ) , che è semplice da assemblare.Γ(c,d)Γ(a,b)I(c,d,c,d)I(a,b,c,d)


Dettagli di implementazione

Le funzioni gamma crescono rapidamente, quindi per evitare il trabocco non calcolare Gamma e prendere il suo logaritmo: utilizzare invece la funzione log-Gamma che si troverà in qualsiasi piattaforma di calcolo statistico (incluso Excel, del resto).

Il rapporto è la derivata logaritmica di Γ , generalmente chiamata ψ , la funzione digamma . Se non è disponibile per te, ci sono modi relativamente semplici per approssimarlo, come descritto nell'articolo di Wikipedia .Γ(d)/Γ(d)Γ,ψ,

Qui, per illustrare, è una diretta Rimplementazione della formula in termini di . Ciò non sfrutta l'opportunità di semplificare algebricamente il risultato, il che lo renderebbe un po 'più efficiente (eliminando un calcolo ridondante di ψ ).Iψ

#
# `b` and `d` are Gamma shape parameters and
# `a` and `c` are scale parameters.
# (All, therefore, must be positive.)
#
KL.gamma <- function(a,b,c,d) {
  i <- function(a,b,c,d)
    - c * d / a - b * log(a) - lgamma(b) + (b-1)*(psigamma(d) + log(c))
  i(c,d,c,d) - i(a,b,c,d)
}
print(KL.gamma(1/114186.3, 202, 1/119237.3, 195), digits=12)

2
Buona risposta. Grazie! Credo che ci sia un errore di segno nella quarta uguaglianza. Inoltre, il tuo pdf gamma dovrebbe avere un fattore aggiuntivo di 'c' nel denominatore. Vuoi che lo modifichi?
Ian Langmore,

@Ian hai ragione; Di solito scrivo la misura come e, non facendolo, ho omesso quel fattore aggiuntivo di c . Buona cattura dell'errore del segno. Se desideri apportare le modifiche, sentiti libero! dx/xc
whuber

2
Ho fatto le correzioni.
Ian Langmore,

10

La distribuzione gamma è nella famiglia esponenziale perché la sua densità può essere espressa come:

f(xθ)=exp(η(θ)T(x)g(θ)+h(x))

g(θ)=log(Γ(c))+clog(b)
θ=[c11b]

Tutte le distribuzioni nella famiglia esponenziale hanno divergenze di KL:

KL(q;p)=g(θp)g(θq)(θpθq)g(θq).

There's a really nice proof of that in:

Frank Nielsen, École Polytechnique, and Richard Nock, Entropies and cross-entropies of exponential families.


Didn't know this. Just a quick question - the g(.) function, does it have to be the same for θp as for θq? So for example, would the above formula be valid for KL divergence of normal pdf from gamma pdf?
probabilityislogic

1
Yes, this formula is for two distributions in the same exponential family.
Neil G
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.