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| | Q)= ∫∞- ∞p ( x ) günlüğüp ( 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 (p‖S)=1
Pe( x ) = 1nΣi = 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^( P∥ S ) = 1nΣi = 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
}
rle
kopyaları 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):
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!