Divergence de Kullback – Leibler entre deux distributions gamma


15

Choisir de paramétrer la distribution gamma par le pdf La divergence de Kullback-Leibler entre et est donnée par [1] commeΓ(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

Je suppose que Ψ(x):=Γ(x)/Γ(x) est la fonction digamma .

Ceci est donné sans dérivation. Je ne trouve aucune référence qui dérive cela. De l'aide? Une bonne référence serait suffisante. La partie difficile est d'intégrer à un pdf gamma.logx

[1] WD Penny, KL-Divergences of Normal, Gamma, Dirichlet, and Wishart densities , Available at: www.fil.ion.ucl.ac.uk/~wpenny/publications/densities.ps


2
Prendre la dérivée du pdf par rapport à introduit le facteur de vous recherchez: c'est pourquoi digamma apparaît. l o g ( x )clog(x)
whuber

Si vous rencontrez Pierre Baldi et Laurent Itti (2010) «Des bits et des wow: une théorie bayésienne de la surprise avec des applications à l'attention» Neural Networks 23: 649-666, vous constaterez que l'équation 73 donne une divergence KL entre deux pdfs gamma. Attention cependant, il semble que la formule soit mal imprimée.
Mr Clarinet

Je cherche une solution au même problème et je trouve que celle- ci est utile.
Yi Yang

Réponses:


15

La divergence KL est une différence d'intégrales de la forme

$$ \ eqalign {I (a, b, c, d) & = \ int_0 ^ {\ infty} \ log \ left (\ frac {e ^ {- x / a} x ^ {b-1}} {a ^ b \ Gamma (b)} \ droite) \ 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} $$

Il suffit de traiter l'intégrale de droite, qui est obtenue en observant

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

D'où

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

Brancher sur les rendements précédents

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

La divergence KL entre et Γ ( a , b ) est égale à I ( c , d , c , d ) - I ( a , b , c , d ) , ce qui est simple à assembler.Γ(c,d)Γ(a,b)I(c,d,c,d)I(a,b,c,d)


Détails d'implémentation

Les fonctions gamma se développent rapidement, donc pour éviter le débordement, ne calculez pas Gamma et ne prenez pas son logarithme: utilisez plutôt la fonction log-Gamma qui se trouvera dans n'importe quelle plate-forme de calcul statistique (y compris Excel, d'ailleurs).

Le rapport est la dérivée logarithmique de Γ , généralement appelée ψ , la fonction digamma . S'il n'est pas disponible, il existe des moyens relativement simples de l'approcher, comme décrit dans l'article Wikipedia .Γ(d)/Γ(d)Γ,ψ,

Pour illustrer ce point , est directement Rmise en œuvre de la formule en termes de . Cela n'exploite pas une opportunité de simplifier algébriquement le résultat, ce qui le rendrait un peu plus efficace (en supprimant un calcul redondant de ψ ).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
Bonne réponse. Merci! Je crois cependant qu'il y a une erreur de signe dans la quatrième égalité. En outre, votre pdf gamma doit avoir un facteur supplémentaire de «c» dans le dénominateur. Souhaitez-vous que je le modifie?
Ian Langmore

@Ian Tu as raison; J'écris habituellement la mesure comme et en ne faisant pas cela, j'ai omis ce facteur supplémentaire de c . Bonne prise sur l'erreur de signe. Si vous souhaitez apporter des modifications, n'hésitez pas! dx/xc
whuber

2
J'ai fait les corrections.
Ian Langmore

10

La distribution gamma est dans la famille exponentielle car sa densité peut s'exprimer comme:

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

En regardant la fonction de densité gamma, son log-normaliseur est avec des paramètres naturels θ = [ c - 1 - 1

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

Toutes les distributions de la famille exponentielle ont une divergence KL:

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

Il y a une très belle preuve de cela dans:

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


g(.)θpθq

1
Oui, cette formule concerne deux distributions de la même famille exponentielle.
Neil G
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.