Cara menghitung divergensi kl dengan python (dengan contoh)
Dalam statistik, divergensi Kullback–Leibler (KL) adalah metrik jarak yang mengukur perbedaan antara dua distribusi probabilitas.
Jika kita mempunyai dua distribusi probabilitas, P dan Q, biasanya kita menulis divergensi KL menggunakan notasi KL(P || Q), yang berarti “divergensi P dari Q”.
Kami menghitungnya menggunakan rumus berikut:
KL(P || Q) = ΣP(x) ln (P(x) / Q(x))
Jika divergensi KL antara dua distribusi adalah nol, hal ini menunjukkan bahwa distribusi tersebut identik.
Kita dapat menggunakan fungsi scipy.special.rel_entr() untuk menghitung divergensi KL antara dua distribusi probabilitas dengan Python.
Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.
Contoh: menghitung divergensi KL dengan Python
Misalkan kita memiliki dua distribusi probabilitas berikut dengan Python:
Catatan : Penting agar probabilitas setiap distribusi berjumlah satu.
#define two probability distributions
P = [.05, .1, .2, .05, .15, .25, .08, .12]
Q = [.3, .1, .2, .1, .1, .02, .08, .1]
Kita dapat menggunakan kode berikut untuk menghitung divergensi KL antara kedua distribusi:
from scipy. special import rel_entr
#calculate (P || Q)
sum(rel_entr(P, Q))
0.589885181619163
Divergensi KL distribusi P dan distribusi Q kira-kira 0,589 .
Perhatikan bahwa satuan yang digunakan dalam perhitungan ini dikenal sebagai nats , yang merupakan kependekan dari natural unit of information .
Jadi kita dapat mengatakan bahwa divergensi KL adalah 0,589 nats .
Perhatikan juga bahwa divergensi KL bukanlah metrik simetris. Artinya jika kita menghitung divergensi KL distribusi Q dari distribusi P, kemungkinan besar kita akan mendapatkan nilai yang berbeda:
from scipy. special import rel_entr
#calculate (Q || P)
sum(rel_entr(Q, P))
0.497549319448034
Divergensi KL distribusi Q dan distribusi P kira-kira 0,497 nats .
Catatan : Beberapa rumus menggunakan log base-2 untuk menghitung divergensi KL. Dalam hal ini kita berbicara tentang divergensi dalam bentuk bit , bukan nat.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya dengan Python:
Cara Membuat Matriks Korelasi dengan Python
Cara Membuat Matriks Kovariansi dengan Python