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