Kullback-Leibler-Divergenz zwischen zwei Gamma-Verteilungen


15

Auswahl der Parametrisierung der Gammaverteilung durch das PDF Die Kullback-Leibler-Divergenz zwischen und ist gegeben durch [1] alsΓ(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

Ich vermute, dass Ψ(x):=Γ(x)/Γ(x) die Digamma-Funktion ist .

Dies ist ohne Ableitung gegeben. Ich kann keinen Hinweis finden, der dies herleitet. Irgendeine Hilfe? Eine gute Referenz wäre ausreichend. Der schwierige Teil ist die Integration von logx gegen ein Gamma-PDF.

[1] WD Penny, KL-Divergenzen der Normal-, Gamma-, Dirichlet- und Wishart-Dichte , verfügbar unter: www.fil.ion.ucl.ac.uk/~wpenny/publications/densities.ps


2
Wenn Sie die Ableitung des PDF-Dokuments in Bezug auf , wird der gesuchte -Faktor eingeführt : Aus diesem Grund wird digamma angezeigt. clog(x)
whuber

Wenn Sie Pierre Baldi und Laurent Itti (2010) begegnen, finden Sie in Gleichung 73 eine KL-Divergenz zwischen zwei Gamma-PDFS. Achten Sie jedoch darauf, dass die Formel anscheinend falsch gedruckt ist.
Mr Clarinet

Ich bin auf der Suche nach einer Lösung für das gleiche Problem und finden diese ein nützlich ist.
Yi Yang

Antworten:


15

Die KL-Divergenz ist eine Differenz von Integralen der Form

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

Wir müssen uns nur mit dem Integral der rechten Hand befassen, das durch Beobachtung erhalten wird

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

Woher

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

Einstecken in die vorhergehenden Ausbeuten

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

Die KL-Divergenz zwischen und Γ ( a , b ) ist gleich I ( c , d , c , d ) - I ( a , b , c , d ) , was einfach zusammenzubauen ist.Γ(c,d)Γ(a,b)I(c,d,c,d)I(a,b,c,d)


Implementierungsdetails

Gamma-Funktionen wachsen schnell, daher sollten Sie Gamma nicht berechnen und seinen Logarithmus verwenden, um einen Überlauf zu vermeiden. Verwenden Sie stattdessen die log-Gamma-Funktion, die in jeder statistischen Computerplattform (einschließlich Excel) zu finden ist.

Das Verhältnis ist die logarithmische Ableitung von Γ , allgemein als ψ , die digamma Funktion. Wenn es Ihnen nicht zur Verfügung steht, gibt es relativ einfache Möglichkeiten, es zu approximieren, wie im Wikipedia-Artikel beschrieben .Γ(d)/Γ(d)Γ,ψ,

Hier zu erläutern, ist eine direkte RUmsetzung der Formel in Bezug auf die . Dies nutzt nicht die Gelegenheit, das Ergebnis algebraisch zu vereinfachen, was es ein wenig effizienter machen würde (durch Eliminieren einer redundanten Berechnung von ψ ).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
Gute Antwort. Vielen Dank! Ich glaube jedoch, dass es in der vierten Gleichheit einen Vorzeichenfehler gibt. Außerdem sollte Ihr Gamma-PDF einen zusätzlichen Faktor von "c" im Nenner haben. Möchten Sie, dass ich es bearbeite?
Ian Langmore

@ Ian Du hast recht; Normalerweise schreibe ich das Maß als und indem ich es nicht tue, lasse ich diesen zusätzlichen Faktor von c weg . Guter Fang auf dem Zeichenfehler. Wenn Sie die Änderungen vornehmen möchten, fühlen Sie sich frei! dx/xc
whuber

2
Ich habe die Korrekturen vorgenommen.
Ian Langmore

10

Die Gamma-Verteilung liegt in der Exponentialfamilie, weil ihre Dichte ausgedrückt werden kann als:

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

Mit Blick auf die Gamma - Dichtefunktion, ihre log-Normalisierer ist mit natürlichen Parameter θ = [ c - 1 - 1

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

Alle Verteilungen in der Exponentialfamilie haben KL-Divergenz:

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

Es gibt einen wirklich schönen Beweis dafür in:

Frank Nielsen, École Polytechnique, und Richard Nock, Entropien und Kreuzentropien exponentieller Familien.


Wusste das nicht. Nur eine kurze Frage - dieG(.) Funktion, muss es das gleiche sein für θp wie für θq? Wäre die obige Formel beispielsweise für die KL-Abweichung von normalem PDF von Gamma-PDF gültig?
Wahrscheinlichkeitsrechnung

1
Ja, diese Formel gilt für zwei Verteilungen in derselben Exponentialfamilie.
Neil G
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.