¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Producto escalar y similitud coseno

Después de esta lección: Puedo usar el producto escalar para decir cuánto se parecen dos vectores.

Lección de 60 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

El producto escalar compara dos vectores

El producto escalar es un número que dice cuánto apuntan dos vectores en la misma dirección. Se calcula multiplicando componente a componente y sumando los resultados.

Con él puedes decir si dos personas tienen gustos parecidos o si dos textos hablan de lo mismo. Al acabar sabrás calcularlo y comparar vectores con la similitud coseno.

Al final de esta lección

Nota

Puedo usar el producto escalar para decir cuánto se parecen dos vectores.

Palabras clave

PalabraQué significa
Producto escalarmultiplicar componente a componente y sumar
Ángulolo abierta que es la separación entre dos vectores
Perpendicularque forma un ángulo recto con otro
Similitud cosenoel producto escalar dividido entre las dos longitudes
Longitudlo grande que es un vector

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El producto escalar multiplica y suma

Para calcular el producto escalar de dos vectores, multiplica las componentes que ocupan el mismo sitio y suma todos esos productos. El resultado es un solo número, no un vector.

Ejemplo: tres personas dan una valoración de 0 a 5 a cuatro cafeterías. Cuanto más coinciden en las cafeterías que les gustan, mayor es el producto.

Ejemplo resuelto: el producto escalar de dos personas

CafeteríaAnaBetoProducto
Plaza545 por 4 = 20
Mercado333 por 3 = 9
Estación000
Campus100
Total20 + 9 + 0 + 0 = 29

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Calcula el producto escalar con un bucle

Código: python
# Valoraciones de 0 a 5 que dan dos personas a cuatro cafeterías.
ana = [5, 3, 0, 1]
beto = [4, 3, 0, 0]

total = 0
for i in range(len(ana)):
    total = total + ana[i] * beto[i]

print("producto escalar:", total)
# Cambia la última valoración de Beto a 5 y vuelve a ejecutar.
# ¿Sube o baja el producto escalar? ¿Cuánto?

Tres productos escalares con NumPy

Comando
docker exec jupyter python3 -c "import numpy as np; a=np.array([5,3,0,1]); b=np.array([4,3,0,0]); c=np.array([0,1,5,4]); print(a@b, a@c, b@c)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El signo del producto dice hacia dónde apuntan

Si dos vectores apuntan casi igual, el producto es grande y positivo. Si forman un ángulo recto, es cero: se dice que son perpendiculares. Si apuntan en sentidos contrarios, es negativo.

[1, 0] y [0, 5] son perpendiculares: uno va hacia la derecha y el otro hacia arriba. Su producto es 1 por 0 más 0 por 5, es decir, 0.

La similitud coseno ignora la longitud

El producto escalar crece si los vectores son largos, aunque apunten distinto. Para comparar solo la dirección, divide entre las dos longitudes. Es la similitud coseno.

Vale 1 si apuntan igual, 0 si son perpendiculares y -1 si son opuestos. Así [2, 1, 0] y [4, 2, 0] dan 1: el segundo es el primero estirado.

Ejemplo resuelto: la similitud coseno de Ana

ParejaProducto escalarLongitudesCoseno
Ana y Beto295,916 y 529 / (5,916 por 5) = 0,98
Ana y Carla75,916 y 6,4817 / (5,916 por 6,481) = 0,183
Beto y Carla35 y 6,4813 / (5 por 6,481) = 0,093

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Calcula las tres similitudes coseno

Comando
docker exec jupyter python3 -c "import numpy as np; a=np.array([5,3,0,1]); b=np.array([4,3,0,0]); c=np.array([0,1,5,4]); n=np.linalg.norm; print(round(a@b/(n(a)*n(b)),3), round(a@c/(n(a)*n(c)),3), round(b@c/(n(b)*n(c)),3))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error muy común

Advertencia

Mucha gente cree que un producto escalar grande significa que dos vectores se parecen mucho. No siempre. [100, 100] y [1, 0] dan 100 solo porque el primero es largo. Usa la similitud coseno cuando quieras comparar la dirección y no el tamaño.

Para ir más lejos: textos como vectores

Un texto se puede convertir en un vector que cuenta cuántas veces aparece cada palabra. Dos textos que hablan de lo mismo dan un coseno cercano a 1.

Escribe dos frases cortas sobre tu comedor y cuenta a mano las palabras que comparten. Después calcula el coseno con la tabla de arriba como guía.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.