まとめ
- La divergencia Jensen–Shannon (JSD) simetriza la KL y mantiene el valor finito.
- Calcula la JSD y su raíz cuadrada (distancia Jensen–Shannon) en Python.
- Aplícala en clustering, evaluación de modelos generativos y análisis de drift.
1. Definición y propiedades #
Con distribuciones (P) y (Q), define (M = \frac{1}{2}(P + Q)). La JSD es:
$$ \mathrm{JSD}(P \parallel Q) = \frac{1}{2} \mathrm{KL}(P \parallel M) + \frac{1}{2} \mathrm{KL}(Q \parallel M) $$
- Simétrica: ( \mathrm{JSD}(P \parallel Q) = \mathrm{JSD}(Q \parallel P) ).
- Acotada entre 0 y 1 (con log base 2).
- Su raíz cuadrada es una métrica válida (satisface la desigualdad triangular).
2. Ejemplo en Python #
import numpy as np
from scipy.spatial.distance import jensenshannon
p = np.array([0.4, 0.4, 0.2])
q = np.array([0.1, 0.3, 0.6])
js_distance = jensenshannon(p, q, base=2)
js_divergence = js_distance ** 2 # elevar al cuadrado para obtener la divergencia
print(f"Distancia Jensen-Shannon : {js_distance:.4f}")
print(f"Divergencia Jensen-Shannon: {js_divergence:.4f}")
jensenshannon devuelve la distancia (raíz cuadrada de la divergencia); al cuadrarla recuperas la JSD.
3. Características y aplicaciones #
- Simetría y estabilidad: evita la dependencia direccional de KL y mantiene finitud incluso cuando los soportes difieren.
- Acotada: los valores se mantienen en un rango controlado, facilitando el umbral.
- Métrica: la distancia resultante puede emplearse en algoritmos que requieran métricas (clustering, embedding).
4. Ejemplos prácticos #
- Modelos generativos: comparar distribuciones generadas vs. reales durante el entrenamiento.
- Modelos de lenguaje/topic: medir divergencia de distribuciones de palabras o temas.
- Detección de anomalías: vigilar cambios de distribución en series temporales.
- Selección de modelos: escoger la salida más próxima a la distribución real.
5. Precauciones #
- Para datos continuos, discretiza (binning) o usa estimación de densidad antes de calcular la JSD.
- Suaviza probabilidades con muchos ceros para evitar inestabilidades.
- Un valor pequeño no garantiza un modelo mejor; interpreta junto a métricas adicionales.
La divergencia Jensen–Shannon ofrece una alternativa estable, simétrica y métrica a la KL. Gracias a SciPy, resulta sencilla de calcular y aplicable a numerosos escenarios de evaluación y monitorización.