4.4.2
Divergensi Jensen–Shannon
Ringkasan
- Divergensi Jensen–Shannon (JSD) menyimetriskan KL dan menjaga nilai tetap terbatas.
- Hitung JSD beserta akar kuadratnya (jarak Jensen–Shannon) di Python.
- Gunakan pada clustering, evaluasi model generatif, dan analisis drift.
1. Definisi dan sifat #
Dengan distribusi (P) dan (Q), tentukan (M = \frac{1}{2}(P + Q)). Divergensi Jensen–Shannon adalah:
$$ \mathrm{JSD}(P \parallel Q) = \frac{1}{2} \mathrm{KL}(P \parallel M) + \frac{1}{2} \mathrm{KL}(Q \parallel M) $$- Simetris: ( \mathrm{JSD}(P \parallel Q) = \mathrm{JSD}(Q \parallel P) ).
- Nilai terletak antara 0 dan 1 (log basis 2).
- Akar kuadrat JSD merupakan metrik valid (memenuhi ketidaksetaraan segitiga).
2. Contoh Python #
| |
jensenshannon mengembalikan jarak (akar dari JSD); kuadratkan bila perlu nilai divergensinya.
3. Karakteristik dan skenario #
- Simetris dan stabil: menghindari masalah arah dan nilai tak terhingga seperti pada KL.
- Terbatas: memudahkan penetapan ambang saat memantau drift.
- Metrik: jaraknya bisa digunakan pada algoritme yang membutuhkan metrik (mis. k-means).
4. Penerapan #
- Model generatif: bandingkan distribusi sampel sintetis dengan data nyata.
- Model bahasa/topik: ukur perbedaan distribusi kata atau topik.
- Deteksi anomali: amati pergeseran distribusi pada data streaming atau time series.
- Seleksi model: pilih keluaran model yang paling mendekati distribusi target.
5. Tips penggunaan #
- Untuk data kontinu, lakukan binning atau estimasi densitas sebelum menghitung JSD.
- Terapkan smoothing saat banyak probabilitas nol.
- Nilai JSD yang kecil tidak serta-merta menjamin performa terbaik; interpretasikan bersama metrik lain.
Jensen–Shannon divergence menawarkan alternatif KL yang stabil, simetris, dan berbasis metrik, sehingga praktis untuk monitoring, evaluasi, dan clustering dalam berbagai domain.