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)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

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 log⁡x 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)=∂∂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).

Woher

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

Einstecken in die vorhergehenden Ausbeuten

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

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.