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)xc−1bce−x/bΓ(bq,cq)Γ(bp,cp)

KLGa(bq,cq;bp,cp)=(cq−1)Ψ(cq)−log⁡bq−cq−log⁡Γ(cq)+log⁡Γ(cp)+cplog⁡bp−(cp−1)(Ψ(cq)+log⁡bq)+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.log⁡x

[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)=∂∂d∫0∞e−x/cxd−1cddx=∂∂d∫0∞e−x/c(x/c)d−1cdx=∫0∞e−x/cxd−1cdlog⁡xcdx=∫0∞log⁡(x)e−x/cxd−1cddx−log⁡(c)Γ(d).

D'où

b−1Γ(d)∫0∞log⁡(x)e−x/c(x/c)d−1dx=(b−1)Γ′(d)Γ(d)+(b−1)log⁡(c).

Brancher sur les rendements précédents

I(a,b,c,d)=−cda−log⁡(abΓ(b))+(b−1)Γ′(d)Γ(d)+(b−1)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)
θ=[c−1−1b]

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.