Curso

"Cosine distance". Imagen de Dall-E.
Medir la similitud o disimilitud entre puntos de datos es útil en muchas aplicaciones, desde el análisis de texto hasta los sistemas de recomendación. La distancia coseno es una métrica especialmente eficaz para datos de alta dimensión o conjuntos dispersos, ya que se centra en la orientación de los vectores más que en su magnitud.
Si quieres repasar conceptos fundamentales de machine learning, empieza con nuestro tutorial completo, Demystifying Mathematical Concepts for Deep Learning. También puedes leer otro artículo sobre aprendizaje basado en distancias, What is Manhattan Distance?, para ampliar tu comprensión de las métricas de distancia y ver las diferencias entre la distancia coseno y la distancia Manhattan.
Definición de la distancia coseno
Dediquemos ahora un momento a definir la distancia coseno según su fórmula. Para ello, también veremos su relación con la similitud coseno.
Fórmula de la distancia coseno
La distancia coseno mide la disimilitud entre dos vectores calculando el coseno del ángulo entre ellos. Puede definirse como uno menos la similitud coseno, como vemos en la fórmula siguiente:
![]()
De forma más detallada, con una expresión matemática formal, la distancia coseno se calcula con la fórmula siguiente.

Aquí, A⋅B representa el producto escalar de los vectores A y B, y ||A|| ||B|| son las magnitudes, o normas euclídeas, de los vectores.
Con esta fórmula cuantificamos la distancia coseno en un rango de 0 a 2. Una distancia coseno de 0 significa que los vectores están perfectamente alineados (sin ángulo entre ellos), lo que indica máxima similitud, mientras que un valor cercano a 2 sugiere que son diametralmente opuestos, indicando máxima disimilitud.
Similitud coseno vs. distancia coseno
Como hemos visto, mientras que la distancia coseno mide la disimilitud entre vectores calculando el coseno del ángulo entre ellos, la similitud coseno cuantifica cuán similares son dos vectores en función del coseno de ese mismo ángulo.
La similitud coseno varía de -1 a 1. Un valor de 1 implica que los vectores están perfectamente alineados (sin ángulo entre ellos), lo que indica máxima similitud, mientras que un valor de -1 implica que son diametralmente opuestos, reflejando máxima disimilitud. Los valores cercanos a cero indican ortogonalidad.
Cálculo y visualización de la distancia coseno
Veamos un ejemplo con dos vectores: vector A (2,4) y vector B (4,2), y calculemos su distancia coseno siguiendo estos pasos:
- Calcula el producto escalar de A y B:
A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16 - Calcula las magnitudes de A y B:
||A|| = √(2² + 4²) = √20
||B|| = √(4² + 2²) = √20
- Divide el producto escalar entre el producto de las magnitudes:
(A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0.8
- Calcula la distancia coseno:
Distancia coseno = 1 - 0.8 = 0.2
Con una distancia coseno de 0.2, el resultado cae bastante bajo en la escala de 0 a 2. Esto sugiere que los vectores A y B son bastante similares en cuanto a la dirección a la que apuntan.
Distancia coseno y similitud coseno. Imagen del autor.
En esta representación:
- El vector A es (2, 4)
- El vector B es (4, 2)
- θ es el ángulo entre A y B
La similitud coseno (0,8) representa el coseno del ángulo θ. Como los vectores están próximos en dirección, el ángulo es pequeño, lo que da lugar a una similitud coseno alta y una distancia coseno baja (0,2).
Como la distancia coseno también puede definirse como 1 - cos(θ), donde cos(θ) es la similitud coseno, esto implica:
- Cuando los vectores son idénticos en dirección (θ = 0°), cos(θ) = 1, por lo que la distancia coseno = 0
- Cuando los vectores son perpendiculares (θ = 90°), cos(θ) = 0, por lo que la distancia coseno = 1
- Cuando los vectores son opuestos (θ = 180°), cos(θ) = -1, por lo que la distancia coseno = 2
Aplicaciones de la distancia coseno
Veamos algunas aplicaciones importantes.
Procesamiento del lenguaje natural (NLP)
La distancia coseno desempeña un papel clave en varias tareas de procesamiento del lenguaje natural, al medir de forma eficaz las relaciones semánticas entre representaciones de texto como word2vec. Para un repaso rápido de estos conceptos, puede resultarte útil nuestro tutorial Understanding Text Classification in Python.
Clasificación y similitud de documentos
En clasificación de documentos, la distancia coseno mide la similitud de contenido comparando los ángulos entre los vectores de los documentos. Cada documento se convierte en un vector, con dimensiones que reflejan las puntuaciones TF-IDF de las palabras. Los documentos similares apuntan en direcciones similares, dando lugar a distancias coseno más pequeñas.
Clustering y agrupación semántica
La distancia coseno destaca en tareas de clustering como K-means, agrupando documentos semánticamente relacionados aunque no usen las mismas palabras. Es ideal para datos de alta dimensión y dispersos, habituales en el procesamiento de texto. Al capturar la orientación vectorial, permite un agrupamiento temático más preciso. Esta técnica se usa a menudo en aprendizaje no supervisado para descubrir agrupaciones naturales dentro de conjuntos de documentos, como agrupar noticias por temas.
Recuperación de información y buscadores
En recuperación de información, la distancia coseno empareja consultas de búsqueda con documentos mediante la comparación de vectores. Los motores de búsqueda encuentran los documentos más cercanos al vector de la consulta en términos de distancia coseno y ordenan más arriba los de menor distancia por relevancia.
Word embeddings y similitud entre palabras
Más allá del análisis a nivel de documento, la distancia coseno es vital en word embeddings como Word2Vec o GloVe, donde las palabras se representan como vectores de alta dimensión. Estos embeddings capturan significado semántico de modo que las palabras con significados similares quedan cerca en el espacio vectorial. La distancia coseno puede usarse para encontrar las palabras más parecidas a una dada, apoyar la detección de sinónimos o incluso impulsar funcionalidades en modelos más complejos como los usados para análisis de sentimiento o traducción automática.
Reconocimiento de imágenes
En reconocimiento de imágenes, la distancia coseno se usa para comparar vectores de características extraídas de imágenes. Ya sea para identificar caras en una multitud o clasificar fotos de naturaleza, analiza cuán similares son los vectores en orientación, no solo en tamaño. Este enfoque ayuda a asignar bien las categorías de las imágenes, mejorando la precisión y la eficacia de los sistemas basados en imágenes.
Sistemas de recomendación
Imagina la distancia coseno como una celestina digital que empareja a los usuarios con películas o productos afines a sus gustos previos. Al observar cómo se alinean los perfiles de usuarios y de ítems en sus espacios vectoriales, los sistemas de recomendación predicen con gran acierto qué te puede gustar a continuación.
Propiedades matemáticas de la distancia coseno
La distancia coseno tiene propiedades matemáticas únicas que la distinguen de otras medidas de distancia. Comprenderlas es importante para interpretarla y aplicarla correctamente en distintos contextos.
Propiedades de espacio métrico
En matemáticas, una métrica o función de distancia define la distancia entre cada par de elementos de un conjunto. Para considerarse una métrica verdadera, una función debe cumplir cuatro condiciones:
-
No negatividad: d(x, y) ≥ 0
-
Identidad de los indistinguibles: d(x, y) = 0 si y solo si x = y
-
Simetría: d(x, y) = d(y, x)
-
Desigualdad triangular: d(x, z) ≤ d(x, y) + d(y, z)
La distancia coseno satisface las tres primeras condiciones, pero no siempre cumple la desigualdad triangular. Esto significa que, en algunos casos, la suma de las distancias coseno entre los puntos A y B y entre B y C puede ser menor que la distancia coseno entre A y C.
Invariancia a escala
Una propiedad destacada de la distancia coseno es su invariancia a la escala. Esto significa que la distancia coseno entre dos vectores permanece igual aunque multipliques uno o ambos vectores por un escalar (constante no nula). Matemáticamente, para cualesquiera escalares no nulos a y b, y vectores x e y:
Distancia coseno(ax, by) = Distancia coseno(x, y)
Esta propiedad de invariancia a la escala diferencia a la distancia coseno de muchas otras medidas de distancia.
Distancia coseno en Python y R
Aquí veremos cómo calcular la distancia coseno con Python y R.
Ejemplo en Python
En Python, podemos usar NumPy para calcular la distancia coseno y la similitud coseno. Lo hacemos obteniendo el producto escalar y la norma de nuestros vectores.
import numpy as np
# Define the vectors
A = np.array([2, 4])
B = np.array([4, 2])
# Calculate cosine similarity
cos_similarity = np.dot(A, B) / (np.linalg.norm(A) * np.linalg.norm(B))
# Calculate cosine distance
cos_distance = 1 - cos_similarity
print("Cosine Similarity: {:.2f}".format(cos_similarity))
print("Cosine Distance: {:.2f}".format(cos_distance))
Salida:
Cosine Similarity: 0.80
Cosine Distance: 0.20
De forma alternativa, podemos calcular la distancia coseno con el paquete SciPy y la función cosine().
import numpy as np
from scipy.spatial.distance import cosine
# Define the vectors
A = np.array([2, 4])
B = np.array([4, 2])
# Calculate cosine distance
cos_distance = cosine(A, B) # Uses scipy's cosine for cosine distance
print("Cosine Distance: {:.2f}".format(cos_distance))
Salida:
Cosine Distance: 0.20
Ejemplo en R
En R, puedes calcular la similitud y la distancia coseno usando operaciones vectoriales básicas. Así es como se hace:
# Define the vectors
A <- c(2, 4)
B <- c(4, 2)
# Calculate cosine similarity
cos_similarity <- sum(A * B) / (sqrt(sum(A^2)) * sqrt(sum(B^2)))
# Note: We can also use %*% operator for matrix multiplication.
# %*%, when applied to two vectors, calculates the dot product.
# For example: cos_similarity <- A %*% B / (sqrt(sum(A^2)) * sqrt(sum(B^2)))
# Calculate cosine distance
cos_distance <- 1 - cos_similarity
# Print the result
print(paste("Cosine Similarity:", cos_similarity))
print(paste("Cosine Distance:", cos_distance))
Salida:
“Cosine Similarity: 0.80”
“Cosine Distance: 0.20”
En el ejemplo de R, la similitud coseno se calcula con operaciones manuales para el producto escalar y las normas, similar al ejemplo de Python, pero usando únicamente la funcionalidad base de R. Observa cómo la distancia coseno se obtiene restando la similitud coseno a 1.
Similitud coseno vs. distancia euclídea y otras métricas
La visualización siguiente amplía nuestro ejemplo original, pero esta vez usa distintos colores para representar tres tipos de medidas de distancia con los mismos vectores:
- Distancia Manhattan mide la suma de las diferencias absolutas de sus coordenadas.
- Distancia euclídea calcula la distancia en línea recta entre dos puntos.
- Distancia coseno se deriva del coseno del ángulo entre dos vectores.

Distancia coseno vs. distancia euclídea vs. distancia Manhattan. Imagen del autor.
Cada una de estas distancias aporta perspectivas únicas sobre los datos. Las distancias euclídea y Manhattan son distancias geométricas que tienen en cuenta la magnitud de los componentes del vector, lo que las hace adecuadas para medidas físicas en el espacio. La distancia coseno, en cambio, se centra en el ángulo entre vectores, por lo que es ideal para entender orientación y direccionalidad, especialmente en espacios de alta dimensión como los usados en análisis de texto y otras áreas de data science.
Conclusión
La distancia coseno y su complemento, la similitud coseno, son herramientas potentes en ciencia de datos y machine learning. Estas métricas ofrecen una visión única de las relaciones entre vectores, especialmente en espacios de alta dimensión donde las medidas tradicionales pueden quedarse cortas.
A medida que los datos crecen en complejidad y dimensionalidad, métricas como la distancia coseno tendrán, probablemente, un papel cada vez más importante a la hora de descubrir patrones y relaciones ocultas. Ya trabajes en procesamiento del lenguaje natural, sistemas de recomendación o cualquier campo que maneje espacios vectoriales de alta dimensión, comprender y aplicar la distancia coseno puede aportar insights valiosos y mejorar el rendimiento de tus modelos. Como siguiente paso, prueba nuestro curso interactivo completo, Designing Machine Learning Workflows in Python, que dedica todo un capítulo al aprendizaje basado en distancias y a flujos no supervisados.
Vinod Chugani comenzó su carrera en Tokio como el jefe más joven del equipo de ventas para hedge funds de JPMorgan y más tarde batió un récord individual de ventas en Lehman Brothers, para después crear un negocio de distribución de electrónica en 30 países que superó los 100 millones de SG$ en ingresos antes de dar el salto a los datos. Graduado en Economía por Duke y antiguo alumno de NYC Data Science Academy, fue uno de los tres becados entre más de 100 solicitantes para el curso Building AI Applications de Hugo Bowne-Anderson en Maven. Hoy escribe en DataCamp, KDnuggets, Machine Learning Mastery y Statology sobre temas que van desde estadística hasta IA agentiva, y mentoriza a profesionales de datos en NYC Data Science Academy con más de 1.000 sesiones uno a uno a sus espaldas.
Preguntas frecuentes
¿Qué es la similitud coseno?
La similitud coseno es una métrica que mide cuán similares son dos vectores en su orientación, con independencia de su magnitud.
¿Cuál es el rango de la similitud coseno?
El rango de la similitud coseno es de -1 a 1
¿Cuál es la fórmula de la similitud coseno?
La fórmula de la similitud coseno calcula el coseno del ángulo entre dos vectores, definida como el producto escalar de los vectores dividido entre el producto de sus magnitudes.
¿Producto escalar vs. similitud coseno?
El producto escalar es la suma de los productos de los elementos correspondientes de dos vectores y refleja tanto su magnitud como su orientación. La similitud coseno, en cambio, es el producto escalar normalizado por el producto de las magnitudes de los vectores y se centra únicamente en su alineación direccional.
¿En qué se diferencia la distancia coseno de la similitud coseno?
La distancia coseno y la similitud coseno son medidas complementarias. La similitud coseno mide cuán similares son dos vectores, y varía de -1 (exactamente opuestos) a 1 (exactamente iguales). La distancia coseno, por su parte, mide cuán diferentes son dos vectores y se calcula como 1 menos la similitud coseno. Va de 0 (vectores idénticos) a 2 (vectores opuestos).
¿Cuál es la fórmula de la distancia coseno?
La fórmula de la distancia coseno mide el ángulo entre dos vectores en un espacio multidimensional y se calcula como 1 menos el coseno del ángulo entre los vectores.
¿Qué indica una distancia coseno de 1?
Una distancia coseno de 1 indica que los dos vectores comparados son perpendiculares (ortogonales) entre sí, formando un ángulo de 90 grados. Esto significa que no tienen similitud direccional, lo que en la práctica sugiere temas completamente diferentes en análisis de texto, ítems no relacionados en sistemas de recomendación o características distintas en vectores de atributos de machine learning.
¿Cuál es la diferencia entre distancia coseno y distancia angular?
La distancia coseno y la distancia angular están estrechamente relacionadas pero no son idénticas. La distancia coseno se define como 1 menos la similitud coseno, mientras que la distancia angular es el ángulo entre dos vectores en radianes y se calcula como el arccoseno de la similitud coseno. La distancia angular es proporcional a la distancia coseno, pero ofrece una interpretación geométrica más intuitiva.
¿Cuál es la diferencia entre distancia coseno y distancia euclídea?
Aunque ambas miden disimilitud, la distancia coseno se centra en el ángulo entre vectores e ignora la magnitud. La distancia euclídea se centra en la magnitud y mide la distancia en línea recta entre dos puntos en el espacio.
¿Por qué es útil la distancia coseno en el análisis de texto?
La distancia coseno es especialmente útil en análisis de texto porque se centra en la proporción de palabras (representadas como dimensiones del vector) más que en sus frecuencias absolutas. Esto la hace eficaz para comparar documentos de distinta longitud e identificar similitudes temáticas con independencia del tamaño del documento.

