Similitud Coseno

Escrito por

en

La Similitud del Coseno (Cosine Similarity) es una de las medidas de similitud más utilizadas en Ciencia de Datos, Machine Learning y Sistemas de Recomendación. Su principal objetivo es medir el grado de semejanza entre dos vectores analizando el ángulo que forman entre sí, en lugar de comparar directamente sus magnitudes.

Esta característica la convierte en una métrica especialmente útil cuando interesa comparar patrones de comportamiento o distribuciones de características, independientemente del tamaño o la cantidad de información contenida en cada vector. Por este motivo, la similitud del coseno es ampliamente utilizada en recomendadores basados en contenido, procesamiento del lenguaje natural (NLP), recuperación de información, búsqueda semántica y análisis de documentos.

¿Qué es la Similitud del Coseno?

La Similitud del Coseno es una medida matemática que cuantifica el grado de semejanza entre dos vectores calculando el coseno del ángulo que forman.

A diferencia de otras métricas como la distancia euclidiana, la similitud del coseno no compara la longitud de los vectores, sino únicamente su orientación.

Dos vectores que apuntan en la misma dirección tendrán una similitud máxima, aunque uno sea considerablemente mayor que el otro.

Matemáticamente se define como:

$$
\text{Cosine Similarity}=
\frac{\mathbf{A}\cdot\mathbf{B}}
{|\mathbf{A}||\mathbf{B}|}
$$

donde:

  • A · B representa el producto escalar entre ambos vectores.
  • ‖A‖ es la norma del vector A.
  • ‖B‖ es la norma del vector B.

¿Cómo funciona?

El funcionamiento de la similitud del coseno puede resumirse en los siguientes pasos.

  1. Representar cada elemento mediante un vector.
  2. Calcular el producto escalar entre ambos vectores.
  3. Calcular la norma de cada vector.
  4. Dividir el producto escalar entre el producto de las normas.
  5. Obtener una puntuación comprendida normalmente entre -1 y 1.

Cuanto menor sea el ángulo entre los vectores, mayor será la similitud.

Interpretación de los valores

El resultado depende del ángulo formado por ambos vectores.

ValorInterpretación
1Vectores idénticos en dirección
0Sin relación (vectores ortogonales)
-1Direcciones completamente opuestas (cuando existen valores negativos)

En la mayoría de aplicaciones de recomendación y NLP, donde los vectores contienen valores no negativos, el rango efectivo suele estar entre 0 y 1.

Ejemplo conceptual

Supongamos dos usuarios que han puntuado películas.

PelículaUsuario AUsuario B
Acción54
Drama43
Comedia11

Aunque las puntuaciones no sean exactamente iguales, ambos usuarios muestran un patrón muy parecido.

La similitud del coseno detectará esta semejanza porque los vectores apuntan prácticamente en la misma dirección.

¿Por qué es importante en los sistemas de recomendación?

En un recomendador basado en similitud interesa comparar los patrones de preferencias y no el número total de interacciones.

Por ejemplo:

UsuarioPelículas vistas
A30
B300

Si ambos usuarios muestran preferencias similares, deberían considerarse parecidos aunque uno haya visto muchas más películas.

La similitud del coseno elimina el efecto del tamaño del vector y compara únicamente la dirección de las preferencias.

Beneficios

La similitud del coseno ofrece numerosas ventajas.

  • Es independiente de la magnitud del vector.
  • Funciona muy bien con datos dispersos (Sparse Data).
  • Resulta especialmente adecuada para texto y documentos.
  • Es ampliamente utilizada en sistemas de recomendación.
  • Se integra fácilmente con algoritmos de Machine Learning.
  • Es eficiente computacionalmente.
  • Produce resultados fácilmente interpretables.

¿Cuándo utilizar la Similitud del Coseno?

Es recomendable utilizarla cuando:

  • Se trabaja con documentos de texto.
  • Se utilizan representaciones TF-IDF.
  • Se emplean embeddings.
  • Se desarrollan sistemas de recomendación basados en contenido.
  • Se comparan perfiles de usuarios.
  • Existen datos de alta dimensionalidad.
  • La magnitud de los vectores no resulta relevante.

Es una de las mejores opciones cuando interesa comparar patrones más que cantidades absolutas.

Ventajas y desventajas

VentajasDesventajas
Independiente de la magnitudNo considera diferencias de escala cuando estas son importantes
Excelente para datos dispersosPuede producir resultados poco intuitivos con valores negativos
Muy utilizada en NLPIgnora la distancia absoluta entre vectores
Fácil de calcularRequiere representación vectorial
Escalable a grandes conjuntos de datosPuede no ser adecuada para variables puramente numéricas continuas

Limitaciones

Aunque es una de las métricas más utilizadas, presenta ciertas limitaciones.

  • Ignora la magnitud de los vectores.
  • No detecta diferencias en el volumen de información.
  • Puede no ser apropiada para datos donde la distancia absoluta sea importante.
  • Requiere que los datos puedan representarse mediante vectores.
  • Cuando existen muchos vectores, el cálculo de todas las similitudes puede resultar costoso.

En aplicaciones de gran escala suele combinarse con técnicas de indexación o búsqueda aproximada de vecinos (Approximate Nearest Neighbors).

Similitud del Coseno vs otras medidas

MedidaQué comparaMagnitudTipo de datos recomendado
Similitud del CosenoDirección del vectorNoTexto, TF-IDF, Embeddings
Correlación de PearsonRelación linealParcialmenteValoraciones
Distancia EuclidianaDistancia geométricaVariables numéricas
Distancia ManhattanDiferencias absolutasVariables numéricas
Índice de JaccardElementos compartidosNoDatos binarios

La similitud del coseno suele ser la opción preferida cuando los datos presentan una alta dimensionalidad y son dispersos.

Aplicaciones en Data Science y Machine Learning

La Similitud del Coseno tiene aplicaciones en numerosos ámbitos.

Entre las más habituales destacan:

  • Sistemas de recomendación.
  • Procesamiento del Lenguaje Natural (NLP).
  • Recuperación de información.
  • Motores de búsqueda.
  • Búsqueda semántica.
  • Clasificación de documentos.
  • Detección de documentos similares.
  • Comparación de embeddings.
  • Clustering.
  • Recuperación de imágenes.
  • Sistemas de preguntas y respuestas.
  • Inteligencia Artificial Generativa (RAG).

Es una de las métricas más utilizadas para comparar representaciones vectoriales.

Implementación en Python

Calcular la similitud entre dos vectores

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

A = np.array([[2, 3]])
B = np.array([[4, 6]])

similaridad = cosine_similarity(A, B)

print(similaridad)
[[1.]]

Comparar varios vectores

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

X = np.array([
    [2, 3],
    [4, 6],
    [5, 1]
])

similaridad = cosine_similarity(X)

print(similaridad)

Resultado aproximado:

[[1.00 1.00 0.69]
 [1.00 1.00 0.69]
 [0.69 0.69 1.00]]

La matriz obtenida contiene la similitud entre todos los pares de vectores.

Similitud del Coseno con TF-IDF

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

documentos = [
    "Machine learning con Python",
    "Aprendizaje automático usando Python",
    "Recetas de cocina italiana"
]

vectorizador = TfidfVectorizer()

X = vectorizador.fit_transform(documentos)

similaridad = cosine_similarity(X)

print(similaridad)

Este es uno de los usos más habituales de la Similitud del Coseno en procesamiento del lenguaje natural.

Obtener los elementos más similares

import numpy as np

indice = 0

similares = np.argsort(
    similaridad[indice]
)[::-1]

print(similares)

Esta técnica constituye la base de numerosos sistemas de recomendación basados en contenido.

Complejidad computacional

El cálculo de la similitud del coseno depende del número de vectores y de su dimensionalidad.

En una matriz con n vectores y d características:

  • El cálculo entre dos vectores tiene una complejidad aproximada de O(d).
  • Calcular todas las similitudes entre n vectores requiere aproximadamente O(n² · d).

En conjuntos de datos muy grandes suele recurrirse a técnicas como:

  • Índices vectoriales.
  • Approximate Nearest Neighbors (ANN).
  • FAISS.
  • Annoy.
  • HNSW.

Estas herramientas permiten acelerar significativamente la búsqueda de elementos similares.

Buenas prácticas

Para utilizar correctamente la Similitud del Coseno se recomienda:

  • Representar correctamente los datos mediante vectores.
  • Utilizar TF-IDF cuando se comparan documentos.
  • Emplear embeddings cuando se trabaja con información semántica.
  • Normalizar los datos cuando sea necesario.
  • Evaluar distintas medidas de similitud antes de seleccionar una.
  • Utilizar técnicas de búsqueda aproximada cuando existan millones de vectores.
  • Validar experimentalmente el rendimiento del sistema de recomendación.

Conclusión

La Similitud del Coseno es una de las métricas más importantes dentro de los sistemas de recomendación y del análisis de datos vectoriales. Al comparar la orientación de los vectores en lugar de su magnitud, permite identificar patrones de comportamiento similares incluso cuando existen diferencias significativas en la cantidad de información disponible.

Su facilidad de implementación, su eficiencia y su excelente rendimiento con datos dispersos la han convertido en una herramienta fundamental en áreas como el procesamiento del lenguaje natural, la recuperación de información, los sistemas de recomendación basados en contenido y las aplicaciones modernas basadas en embeddings. Comprender su funcionamiento, ventajas y limitaciones resulta esencial para seleccionar la medida de similitud más adecuada en cada problema de Data Science y Machine Learning.