Distancias

Eval

Distancias

まとめ
  • Clasificar las medidas de distancia y similitud según su uso habitual.
  • Comparar distancias representativas para vectores, distribuciones de probabilidad y transporte óptimo con ejemplos en código.
  • Resaltar consideraciones de preprocesado y reducción de dimensionalidad que influyen en el comportamiento de la distancia.

Capítulo 4 #

Medidas de distancia y similitud #

Las distancias cuantifican cuán lejos están dos elementos; las similitudes hacen lo contrario. Son la base de la agrupación, la recomendación, la detección de anomalías y la evaluación de modelos generativos. Cada distancia parte de ciertas suposiciones sobre los datos, por lo que conviene elegir la métrica que mejor encaje con los datos y el algoritmo posterior.


Categorías principales #

1. Distancias en espacios vectoriales #

  • Distancia euclídea: la más intuitiva; muy sensible al escalado de características.
  • Similitud/distancia coseno (Similitud coseno): compara direcciones; ideal para TF-IDF o embeddings.
  • Distancias Manhattan / Chebyshev: normas L1 y L∞; útiles para vectores dispersos o comparaciones robustas.

2. Distancias entre distribuciones de probabilidad #

  • Divergencia KL (KL): entropía relativa; asimétrica y sensible a probabilidades cero.
  • Divergencia Jensen–Shannon (Jensen–Shannon): variante simétrica y finita de KL; su raíz cuadrada es métrica.
  • Distancia de Hellinger (Hellinger): usa raíz cuadrada para obtener simetría y triángulo.

3. Basadas en transporte óptimo #

  • Distancia Wasserstein (Wasserstein): captura diferencias de ubicación y forma; popular en modelos generativos y detección de drift.
  • Distancia Sinkhorn: variante regularizada con entropía que acelera el cálculo.

Comparar distancias vectoriales #

import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics.pairwise import cosine_distances, euclidean_distances

embeddings = np.array(
    [
        [0.2, 0.4, 0.4],
        [0.1, 0.9, 0.0],
        [0.6, 0.2, 0.2],
        [0.3, 0.1, 0.6],
        [0.05, 0.45, 0.5],
    ]
)
labels = ["A", "B", "C", "D", "E"]

cos_dist = cosine_distances(embeddings)
euc_dist = euclidean_distances(embeddings)

fig, axes = plt.subplots(1, 2, figsize=(7.5, 3.3))
for ax, matrix, title in zip(
    axes,
    (cos_dist, euc_dist),
    ("Distancia coseno", "Distancia euclídea"),
):
    im = ax.imshow(matrix, cmap="viridis")
    ax.set_xticks(range(len(labels)))
    ax.set_yticks(range(len(labels)))
    ax.set_xticklabels(labels)
    ax.set_yticklabels(labels)
    ax.set_title(title)
    for i in range(len(labels)):
        for j in range(len(labels)):
            ax.text(j, i, f"{matrix[i, j]:.2f}", ha="center", va="center", color="white")
fig.colorbar(im, ax=axes.ravel().tolist(), shrink=0.9, label="Distancia")
plt.tight_layout()
Mapas de calor de distancias coseno y euclídea

El “vecino más cercano” cambia según la métrica. La distancia coseno prioriza la dirección (B y E quedan próximos), mientras que la euclídea enfatiza diferencias de magnitud.


Cómo elegir una distancia #

  1. Revisa el escalado de variables
    Estandariza o normaliza cuando las magnitudes difieren entre características.
  2. Considera la dispersión
    En datos dispersos (texto, recomendadores) suele funcionar mejor el coseno.
  3. Identifica necesidades de distribución
    Emplea KL/Jensen–Shannon/Hellinger para vectores de probabilidad; cuida las diferencias de soporte.
  4. Determina si importa la forma
    Wasserstein captura desplazamientos y dispersión, útil para modelos generativos y drift.
  5. Equilibra precisión y coste
    En alta dimensión o grandes volúmenes, valora aproximaciones (LSH, Sinkhorn).

Referencia rápida #

CategoríaMedidaUso típicoNotas
VectorSimilitud cosenoEmbeddings de texto, TF-IDF, datos dispersosGestiona con cuidado los vectores nulos
VectorEuclídea / L1 / L∞Agrupación con variables continuasEl escalado es crítico
DistribuciónDivergencia KLComparar distribuciones de modelo vs datosAsimétrica; sin definición con soporte cero
DistribuciónJensen–ShannonComparación simétrica de probabilidadesLa raíz cuadrada es métrica
DistribuciónDistancia de HellingerInferencia bayesiana, vigilancia de driftEl diseño del histograma/normalización influye
Transporte óptimoDistancia WassersteinModelos generativos, detección de anomalíasCoste computacional alto; considera Sinkhorn

Lista de verificación #

  • ¿Se aclaró si las entradas son vectores o distribuciones?
  • ¿Se comprobaron las hipótesis (simetría, desigualdad triangular) que exige el algoritmo posterior?
  • ¿Se evaluó el impacto de normalizar o reducir la dimensión?
  • ¿Se consideraron métodos aproximados cuando la distancia exacta es costosa?
  • ¿Se visualizaron los cambios de distancia para comprobar que concuerdan con la intuición?