Divergencia Jensen–Shannon

Eval

Divergencia Jensen–Shannon

Creado: Última actualización: Tiempo de lectura: 2 min
まとめ
  • 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.