Similitud y distancia coseno

Eval

Similitud y distancia coseno

Creado: Última actualización: Tiempo de lectura: 2 min
まとめ
  • La similitud coseno mide la cercanía entre vectores a través del ángulo que forman.
  • Calcula similitud/distancia coseno en Python para embeddings o vectores TF-IDF dispersos.
  • Revisa aspectos prácticos como normalización y el tratamiento de vectores nulos.

1. Definición e intuición #

Para \(\mathbf{a}, \mathbf{b}\):

$$ \cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{|\mathbf{a}| , |\mathbf{b}|} $$

  • Cercano a 1: apuntan en la misma dirección (alta similitud).
  • Cerca de 0: ortogonales (sin relación).
  • Cercano a –1: direcciones opuestas.
  • Como distancia: \(d = 1 - \cos(\theta)\).

Al normalizar la magnitud, el coseno se centra en la dirección del vector.


2. Ejemplo en Python #

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity, cosine_distances

embeddings = np.array(
    [
        [0.1, 0.4, 0.5],
        [0.2, 0.2, 0.6],
        [0.6, 0.3, 0.1],
    ]
)

sim_matrix = cosine_similarity(embeddings)
dist_matrix = cosine_distances(embeddings)

print(sim_matrix.round(3))
print(dist_matrix.round(3))

Para un par de vectores usa scipy.spatial.distance.cosine. Las matrices dispersas funcionan bien con la similitud coseno en scikit-learn.


3. Características clave #

  • Invariante a la escala: ideal para TF-IDF o embeddings con magnitudes distintas.
  • Apto para datos dispersos: se mantiene estable aunque la mayoría de entradas sean cero.
  • Valores negativos: interpreta con cuidado; puede requerir centrado o normalización.

4. Aplicaciones #

  • Búsqueda y recomendación: rankear ítems según similitud coseno con una consulta o perfil.
  • Clustering temático: usar distancia coseno en k-means (o spherical k-means) para agrupar textos.
  • Evaluación de embeddings: comparar distribuciones de similitud para pares positivos/negativos.

5. Notas prácticas #

  • La similitud coseno no está definida para vectores nulos; elimínalos o añade un epsilon.
  • La distancia coseno no siempre cumple la desigualdad triangular; verifica los requisitos del algoritmo posterior.
  • Combínala con estandarización o reducción de dimensión cuando las orientaciones sean sensibles a la escala.

La similitud coseno es una métrica sencilla pero potente para comparar direcciones; cuida los vectores nulos y las asunciones métricas al integrarla en tu pipeline.