4.4.4
Similitud y distancia coseno
Resumen
- 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 #
| |
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.