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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *