Soru:
PMF 0s içerdiğinde Kullback-Leibler sapması nasıl hesaplanır?
Legend
2011-08-11 05:08:37 UTC
view on stackexchange narkive permalink

Aşağıdaki zaman serilerine sahibim

enter image description here

aşağıda yayınlanan veriler kullanılarak elde edilmiştir.

10 kayan pencere boyutu için deniyorum mevcut kayan penceredeki değerlerin PMF'si ile geçmişin PMF'si arasındaki KL sapmasını, zaman boyunca KL-sapmasının değerini çizmek ve böylece iki zaman serisini karşılaştırabilmem için hesaplamak.

Şu an için, karşılaştığım kavramsal bir problem var (Python kullanarak açıklayacağım):

  [228] 'de: örnekler = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1] # Gerçekte bu 10, 20 olmalıdır çünkü bu, zaman serilerinde gördüğüm maksimum değerdir. [229]: bins = scipy.linspace (0, 10, 21) [230] içinde: binsOut [230]: array ([0., 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 5.5, 6., 6.5, 7. , 7.5, 8., 8.5, 9., 9.5, 10.]) [231] içinde: scipy.histogram (örnekler, bölmeler = bölmeler, yoğunluk = Doğru) Çıkış [231] :( array ([1.63636364, 0., 0.36363636, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]), dizi ([ 0., 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 5.5, 6., 6.5, 7., 7.5, 8., 8.5, 9., 9.5, 10.]))  

Sorun, sonuçta ortaya çıkan PMF ’nin 0 içermesi, dolayısıyla gerçekten birden çok KL sapmasını elde etmek için PMF ’ler. Birisi bana bu sorunu nasıl hafifleteceğimi söyleyebilir mi?

Veriler

  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  
üç yanıtlar:
#1
+12
Suresh Venkatasubramanian
2011-08-12 20:48:58 UTC
view on stackexchange narkive permalink

Bu sorunu çözmenin standart bir püf noktası, Laplace düzeltmesi denen şeyi kullanmaktır. Gerçekte, tüm bölmelere bir "sayım" eklersiniz ve yeniden normalize edersiniz. Bunun yerine 0,5 sayım eklemek için iyi nedenler de vardır: Bu belirli tahmin ediciye Krichevsky-Trofimov tahmincisi denir.

#2
+4
highBandWidth
2011-08-11 21:56:33 UTC
view on stackexchange narkive permalink

Sorununuz hakkında düşünmenin bir yolu, histogramdan hesapladığınız PMF'ye gerçekten güvenmediğinizdir. Modelinizde ufak bir önceliğe ihtiyacınız olabilir. PMF'ye güveniyorsanız, bir PMF'de diğer PMF'de imkansız olan değerler aldığınız için KL diverjansı sonsuz olmalıdır. Öte yandan, daha önce hafif, bilgilendirici olmayan bir önünüzde varsa, o zaman her zaman belirli bir sonucu görme olasılığınız vardır. Bunu tanıtmanın bir yolu, histograma birler çarpı skaler bir vektör eklemek olabilir. Kullanacağınız teorik önceki dağıtım, kategorik dağılımın eşlenik öncüsü olan dirichlet dağıtımıdır. Ancak pratik amaçlar için

  pmf_unnorm = scipy.histogram (örnekler, bölmeler = bölmeler, yoğunluk = Doğru) [0] + w * scipy.ones (len (bölmeler) - 1) pmf = pmf_unnor / sum (pmf_unnorm)  

burada w , ne kadar güçlü bir öncekine sahip olmak istediğinize bağlı olarak bir miktar pozitif ağırlıktır.

Zamanınız ve cevabınız için +1. Teşekkür ederim. Bunu son 8 saattir okuyorum ve bu konuda çalışmadan önce bir tane eklemem gerekiyor gibi görünüyor. Ancak bu gerçeği açıklayan uygun bir referans bulamıyorum. Bu istatistik topluluğunda bariz bir şey mi yoksa KL-sapması için bu gereksinime işaret eden bir referans biliyor musunuz?
#3
+3
Emre
2011-08-11 10:13:28 UTC
view on stackexchange narkive permalink

İki PMF'yi karşılaştırabilmeniz için verileri binerdim; $ \ hat P $ ve $ \ hat Q $ olmak üzere iki PMF tahmini verildiğinde, KLD'yi şu şekilde hesaplayabilirsiniz: $ D_ {KL} (\ hat P \ | \ hat Q) \ equiv \ sum_i \ hat P (i) \ log \ dfrac {\ hat P (i)} {\ hat Q (i)} $, burada $ i $ kutuların üzerinden geçiyor.

Üzgünüm, R.

Zamanınız için +1. Sorumu bu formülle karşılaştığım problemle güncelledim. PMF'ler "0" içerdiğinde bu sorunu nasıl çözeceğimi anlayamıyorum. Bu sorunu nasıl azaltacağınıza dair herhangi bir yorumunuz var mı?
Sıfır, verinin olmadığını mı gösterir yoksa geçerli bir değer mi? İlki ise, onu görmezden gelirsiniz. İkincisi ise, bölmelerden birini sıfır değerine ayırabilirsiniz.
Bu bir zaman serisi olduğu için, bazı durumlarda sıfır olay vardı ve bazılarında eksik veri vardı, bu yüzden eksik değeri değiştirmek için bir sıfır ekledim. İlginç bir noktayı getiriyorsunuz: Bir zaman serisindeki değerleri, eksik olmaları durumunda göz ardı edebilir miyim? Bu ölümcül olmaz mı?
Hareketli penceredeki öğeleri seçerken sıfırları tutardım, ancak KLD'yi hesaplamak için onları göz ardı ederdim.
Anladım. Teşekkür ederim! Cevap olarak kabul edildi. Son sorum, "Jensen-Shannon" ayrışması adlı ilgili bir metrikle ilgili olacaktır. Bu metriğe tesadüfen rastladım, ancak bu metriğin mutlak süreklilik şartı yok gibi görünüyor. Herhangi bir öneri?
$ D_ {KL} $ formülünde bir logaritma olmalı mı? ve $ Q_ {i} = 0 $ ve $ P_ {i}> 0 $ olduğunda ne yapılmalı?
Evet tabi ki; Logaritmayı ekledim. Sıfırla bölmeyi, tüm veri olarak Q seçerek (muhtemelen herhangi bir deliği olmayacak) veya diğer yanıtlarda belirtildiği gibi her bölmeye küçük bir sayı ekleyerek önleyebilirsiniz.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...