İki numune için Kullback-Leibler Iraksaklığı


10

İki örnek için Kullback-Leibler Diverjansının sayısal bir tahminini uygulamaya çalıştım. Uygulamada hata ayıklamak için örnekleri iki normal dağılımdan ve çizin .N ( 1 , 2 )N-(0,1)N-(1,2)

Basit bir tahmin için iki histogram oluşturdum ve integrali sayısal olarak tahmin etmeye çalıştım. Histogramın histogramlarından birinin kutularının sıfır olduğu kısımları işlemekle sıkışıp kaldım, böylece sıfıra bölme veya sıfır logaritması ile sonuçlanacağım. Bu sorunu nasıl çözebilirim?

Aklıma bir soru geldi: İki farklı düzgün dağılım arasındaki KL-Diverjans tam olarak nasıl hesaplanır? İntegrali her iki dağıtımın destek birliği ile sınırlamak zorunda mıyım?


Normal dağılımın desteği gerçek sayılar kümesidir. Saf matematikte bir sorun yoktur, ancak evet, sayısal yaklaşımınız için, örneklem büyüklüğünüzün entegre etmek istediğiniz bölgeye göre yeterince büyük olduğundan emin olmanız gerekir. Saf matematikte olduğu gibi (-inf, + inf) ile bütünleşemezsiniz ... Makul bir şey mi arıyorsunuz? Ortalamadan 3 standart sapmadan daha fazla iseniz, oldukça ince olacak ...
Matthew Gunn

1
İkinci sorunuzla ilgili olarak, iki farklı tekdüze dağılım arasındaki KL sapması tanımsızdır ( tanımlanmamıştır). Benzer şekilde, her bir numunenin diğer numunedeki her gözlemle aynı değere sahip en az bir gözlemi olmadıkça, iki deneysel dağılım için KL sapması tanımlanmamıştır. günlük(0)
jbowman

@jbowman Küçük not. Eğer bu doğru olsa da tanımsız (veya - ), bu tedavi için bilgi teoride gelenektir günlüğüne ( 0 ) 0 olarak 0 . günlük(0)-günlük(0)00
Luca Citi

Yanıtlar:


9

Kullback-Leibler sapması bu nedenle, p ( x ) , q ( x ) yoğunluk fonksiyonlarının bazı tahminlerine ihtiyacımız olacak ampirik verilerden hesaplamak (tahmin etmek ) için . Böylece doğal bir başlangıç ​​noktası yoğunluk tahmini ile olabilir (ve bundan sonra sadece sayısal entegrasyon). Böyle bir yöntemin ne kadar iyi veya kararlı olacağını bilmiyorum.

KL(P||S)=-p(x)günlükp(x)q(x)dx
p(x),q(x)

Ama önce ikinci sorunuz, sonra birinci soruya döneceğim. Diyelim ki ve q sırasıyla [ 0 , 1 ] ve [ 0 , 10 ] üzerinde eşit yoğunluklardır . Daha sonra KL ( p | | q ) = log 10 iken KL ( q | | p ) tanımlamak daha zordur, ancak bunu vermenin tek makul değeri görebildiğim kadarıyla , log entegre etmeyi içerdiğinden ( 1 /pq[0,1][0,10]KL(p||q)=günlük10KL(q||p)log olarak yorumlamayı seçebiliriz. Bu sonuçlar, Kullback-Leibler (KL) Diverjansına ilişkin Sezgideverdiğim yorumdan makul.günlük(1/0)günlük

Ana soruya dönüyoruz. Çok parametrik olmayan bir şekilde sorulur ve yoğunluklar hakkında herhangi bir varsayım belirtilmez. Muhtemelen bazı varsayımlara ihtiyaç vardır. Ancak, iki yoğunluğun aynı fenomen için rakip modeller olarak önerildiğini varsayarsak, muhtemelen aynı baskın ölçüye sahip olduklarını varsayabiliriz: örneğin, sürekli ve ayrık bir olasılık dağılımı arasındaki KL sapması daima sonsuz olacaktır. Bu soruyu ele alan bir makale şu şekildedir: https://pdfs.semanticscholar.org/1fbd/31b690e078ce938f73f14462fceadc2748bf.pdf Ön yoğunluk kestirimi gerektirmeyen bir yöntem önerir ve özelliklerini analiz eder.

(Başka birçok makale var). Geri dönüp o makaleden bazı detayları, fikirleri göndereceğim.

 EDIT               

Kesinlikle sürekli dağılımlardan gelen iid örnekleri ile KL diverjansının tahmini ile ilgili bu makaleden bazı fikirler. Tek boyutlu dağılımlar için önerilerini gösteriyorum, ancak vektörler için de bir çözüm veriyorlar (en yakın komşu yoğunluk tahminini kullanarak). Prova için kağıdı okuyun!

Ampirik dağılım fonksiyonunun bir versiyonunu kullanmayı teklif ederler, ancak sürekli bir versiyon elde etmek için numune noktaları arasında doğrusal olarak enterpole edilirler. P e ( x ) = 1 tanımlıyorlar buradaUHeavyside basamak fonksiyonudur, ancakU(0)=0.5 olacak şekilde tanımlanır. Daha sonra fonksiyonu doğrusal interpolasyon (ve aralığının dışında yatay olarak uzatılmış) olanPC(csürekli için). Daha sonra Kullback-Leibler sapma tahmin etmek için teklif D (pS)=1

Pe(x)=1nΣben=1nU(x-xben)
UU(0)=0.5Pcc buradaδPc=Pc(xi)-Pc(xi-ϵ)veϵ, numunelerin en küçük aralıklarından daha küçük bir sayıdır.
D^(PS)=1nΣben=1ngünlük(δPc(xben)δSc(xben))
δPc=Pc(xben)-Pc(xben-ε)ε

İhtiyacımız olan ampirik dağıtım fonksiyonunun sürümü için R kodu

my.ecdf  <-  function(x)   {
    x   <-   sort(x)
    x.u <-   unique(x)
    n  <-  length(x) 
    x.rle  <-  rle(x)$lengths
    y  <-  (cumsum(x.rle)-0.5) / n
    FUN  <-  approxfun(x.u, y, method="linear", yleft=0, yright=1,
                           rule=2)
    FUN
}          

rlekopyaları ile dava ilgilenmek için kullanılan not x.

Sonra KL diverjansının tahmini şu şekilde verilir:

KL_est  <-  function(x, y)   {
    dx  <-  diff(sort(unique(x)))
    dy  <-  diff(sort(unique(y)))
    ex  <-  min(dx) ; ey  <-  min(dy)
    e   <-  min(ex, ey)/2
    n   <-  length(x)    
    P  <-   my.ecdf(x) ; Q  <-  my.ecdf(y)
    KL  <-  sum( log( (P(x)-P(x-e))/(Q(x)-Q(x-e)))) / n
    KL              
}

Sonra küçük bir simülasyon gösteririm:

KL  <-  replicate(1000, {x  <-  rnorm(100)
                         y <- rt(100, df=5)
                         KL_est(x, y)})
hist(KL, prob=TRUE)

bu tahmin edicinin, bu tahmin edicinin örnekleme dağılımını gösteren (bir tahmin):

KL tahmincisinin örnekleme dağılımı

Karşılaştırma için, bu örnekte KL diverjansını sayısal entegrasyon ile hesaplıyoruz:

LR  <-  function(x) dnorm(x,log=TRUE)-dt(x,5,log=TRUE)
100*integrate(function(x) dnorm(x)*LR(x),lower=-Inf,upper=Inf)$value
[1] 3.337668

hmm ... aradaki fark, araştırılacak çok şey var!


5

Kjetil-b-halvorsen'in cevabına biraz genişleyen ve yorum yapmadığım için üzgünüm, itibarım yok:

  1. Ben analitik hesaplama (100 ile çarpma olmadan) olması gerektiğini hissediyorum:

LR <- function(x) dnorm(x,log=TRUE)-dt(x,5,log=TRUE) integrate(function(x) dnorm(x)*LR(x),lower=-Inf,upper=Inf)$value

  1. D^(P||S)D^(P||S)-1D(P||S)

Bu iki düzeltme yapıldıktan sonra sonuçlar daha gerçekçi görünür.


Teşekkürler, buna bakacağım ve cevabımı güncelleyeceğim.
kjetil b halvorsen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.