Python'da kl diverjansı nasıl hesaplanır (örnekle)


İstatistikte Kullback-Leibler (KL) farklılığı, iki olasılık dağılımı arasındaki farkı ölçen bir mesafe ölçüsüdür.

P ve Q olmak üzere iki olasılık dağılımımız varsa, genellikle KL ıraksamasını “P’nin Q’dan ıraksaması” anlamına gelen KL(P || Q) gösterimini kullanarak yazarız.

Aşağıdaki formülü kullanarak hesaplıyoruz:

KL(P || Q) = ΣP(x) ln (P(x) / Q(x))

İki dağılım arasındaki KL farkının sıfır olması, dağılımların aynı olduğunu gösterir.

Python’da iki olasılık dağılımı arasındaki KL farklılığını hesaplamak için scipy.special.rel_entr() fonksiyonunu kullanabiliriz.

Aşağıdaki örnekte bu fonksiyonun pratikte nasıl kullanılacağı gösterilmektedir.

Örnek: Python’da KL farklılığının hesaplanması

Python’da aşağıdaki iki olasılık dağılımına sahip olduğumuzu varsayalım:

Not : Her dağılımın olasılık toplamının bir olması önemlidir.

 #define two probability distributions
P = [.05, .1, .2, .05, .15, .25, .08, .12]
Q = [.3, .1, .2, .1, .1, .02, .08, .1]

İki dağılım arasındaki KL farkını hesaplamak için aşağıdaki kodu kullanabiliriz:

 from scipy. special import rel_entr

#calculate (P || Q)
sum(rel_entr(P, Q))

0.589885181619163

P dağılımının Q dağılımından KL sapması yaklaşık 0,589’dur .

Bu hesaplamada kullanılan birimlerin, doğal bilgi biriminin kısaltması olan nats olarak bilindiğini unutmayın.

Yani KL diverjansının 0,589 nat olduğunu söyleyebiliriz.

Ayrıca KL ıraksamasının simetrik bir metrik olmadığını unutmayın. Bu, Q dağılımının P dağılımından KL sapmasını hesaplarsak muhtemelen farklı bir değer elde edeceğimiz anlamına gelir:

 from scipy. special import rel_entr

#calculate (Q || P)
sum(rel_entr(Q, P))

0.497549319448034

Q dağılımının P dağılımından KL sapması yaklaşık 0,497 nat’tır .

Not : Bazı formüller KL sapmasını hesaplamak için log tabanı-2’yi kullanır. Bu durumda nat’lardan ziyade bitler cinsinden farklılıktan bahsediyoruz.

Ek kaynaklar

Aşağıdaki eğitimlerde Python’da diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:

Python’da Korelasyon Matrisi Nasıl Oluşturulur
Python’da Kovaryans Matrisi Nasıl Oluşturulur

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir