¿Cómo se relacionan las normas de los vectores y el producto interno con el ángulo que forman?
Para comprender cómo interactúan los vectores, es esencial entender cómo se relaciona el producto interno con las normas de los vectores y el ángulo que forman entre sí. Esta relación puede simplificarse gracias a la fórmula del producto interno.
Si consideramos dos vectores, ( V_1 ) y ( V_2 ), su producto interno ( V_1^T \cdot V_2 ) se puede expresar como el producto de sus normas multiplicado por el coseno del ángulo que forman. Es decir:
Este enfoque no solo simplifica los cálculos algebraicos, sino que proporciona un entendimiento conceptual más intuitivo sobre cómo se relacionan los vectores en el espacio.
¿Cómo podemos visualizar vectores y sus relaciones en Python?
Visualizar vectores y entender sus relaciones es esencial para aquellos que trabajan con álgebra lineal. Python nos ofrece herramientas útiles como Matplotlib y NumPy para crear gráficos que representan vectores en un plano.
Definición de vectores:
import numpy as np
import matplotlib.pyplot as plt
# Definimos los vectoresV1 = np.array([0,3])V2 = np.array([3,3])
Esta visualización nos permitirá observar la configuración espacial de nuestros vectores, entendiendo mejor el ángulo que forman y la interacción entre ellos.
¿Cómo corroborar la igualdad entre el producto interno y otras expresiones?
Una vez visualizados los vectores, se pueden realizar verificaciones matemáticas para confirmar la igualdad entre el producto interno calculado y otras expresiones utilizando las normas y el coseno del ángulo.
Al evaluar estas expresiones, confirmamos la validez de nuestra comprensión algebraica y geométrica.
¿Por qué es útil conocer el ángulo entre vectores en machine learning?
En el contexto de machine learning, conocer el ángulo entre vectores es crucial debido a la similitud coseno. Esta medida ayuda a identificar el grado de similitud entre documentos o conjuntos de datos.
Similitud coseno: Si dos vectores que representan documentos tienen un ángulo pequeño, sus textos son similares.
Ángulos de 90 grados: Indican que los documentos son completamente diferentes.
La comprensión y aplicación de estos conceptos permiten a los profesionales de machine learning mejorar las técnicas de análisis de datos, facilitando una evaluación más precisa de patrones y relaciones en grandes volúmenes de información.
Aprender a representar y analizar estos mecanismos te permitirá avanzar en campos tan diversos como el procesamiento del lenguaje natural, la visión por computadora y otras áreas donde las matemáticas y la representación espacial juegan un papel fundamental. ¡Sigue aprendiendo y explorando las infinitas posibilidades que estos conocimientos traen consigo!
Viniendo del curso de redes neuronales este tema es bastante importante, ya que el coseno, que vendria a ser:
cos(x) = v1v2 / norma(v1)*norma(v2)
Se usa como metrica para medir el accuracy de un modelo de machine learning, midiendo la similitud entre el vector de los labels y el vector de nuestras predicciones.
Gracias a este comentario le prestare aun mas atención a esta clase
Gracias
Producto interno en función de la norma
El producto interno de dos vectores es numéricamente igual a la multiplicación de las normas (de orden 2) de estos vectores por el coseno que forman:
v_1.dot(v_2) = norm_2(v_1)*norm_2(v_2)*cos(α)
Notas:
Hallar cosenos en python: np.cos() #solo admite radianes
Convertir grados sexagesimales a radianes: np.deg2rad()
En ML usamos esta igualdad para hallar la similitud coseno, mientras más pequeño el ángulo entre dos vectores más similares son
yo lo conocia como producto punto
les dejo el codigo para determinar el ángulo de dos vectores teniendo el producto interno cómo función de una norma entre ellos, tendrá más de una parte, siguiendo en las respuestas
Comencemos con la base matemática
Para el producto interno cómo función de una norma, tenemos la sig. ecuación:
V1TxV2 = L2(V1)L2(V2)cos(a) a es el ángulo
Lo que está a la derecha de la igualdad es la parte que nos importa, ya que ahí se encuentra el ángulo y es lo que queremos saber, despejando cos(a) dónde se encuentra el ángulo obtendremos lo siguiente:
cos(a) = V1TxV2 / (L2(V1)L2(V2))
Para despejar a, usaremos la función arccos, que es la inversa del coseno, tal que:
arccos(cos(a)) = a (recuerden que a es nuestro ángulo que estamos buscando)
(2)
Ahora vamos al código, teniendo los pares de vectores AB y CD en dónde se establece que A = [2 2] , B= [0 3] , C= [1 3] , D=[5 4]
#creamos los vectores, trabajaremos con A y B en una primera instancia
A= np.array([1,2])B= np.array([5,3])C= np.array([1,3])D= np.array([5,4])/*determinamos el valor de ATxB*/ATxB=A.T.dot(B)ATxB(6)#determinamos el valor de la segunda norma para ambos vectores por separado, para luego multiplicar
A_L2= np.linalg.norm(A, ord=2)B_L2= np.linalg.norm(B, ord=2)AL2xBL2=A_L2*B_L2
(3)
#modelamos nuestras funciones con la base matemática que determinamos más arriba, integrando lo que llevamos
cos_angulo_ab =ATxB/AL2xBL2(0.7071067811865475)#añadimos la función arccos para obtener el ángulo(en radianes)angulo_ab_rad = np.arccos(cos_angulo_axb)(0.7853981633974484)
#pasamos radianes a grados
angulo_ab = np.rad2deg(angulo_ab_rad)(45)#esto significa que el ángulo que crea A y B es de 45°
Si alguien tiene curiosidad del ejemplo de los documentos este vídeo explican como utilizar la similitud coseno, en los primeros 5 mins esta un ejemplo de como se haría a mano y como se haría en python.
Si 2 vectores (v1, v2) difieren en noventa grados, serían vectores perpendiculares, y el producto interno de 2 vectores perpendiculares es igual a 0.
Me parece o esta sería la razón por la que, en el ejemplo del documento, un documento no tiene que ver nada con el otro.🤔
Gracias por el análisis. Es cierto, esa debe ser la razón 😊
Buen análisis :)
para hallar el angulo entre 2 vectores
import math
def dotproduct(v1, v2):returnsum((a*b)for a, b inzip(v1, v2))def length(v):return math.sqrt(dotproduct(v, v))def angle(v1, v2):return np.rad2deg(math.acos(dotproduct(v1, v2)/(length(v1)*length(v2))))
v01 = np.array([0,3])v02 = np.array([3,3])
angle(v01, v02)45.0
Que curso tan bien hecho, el profesor explica muy bien y detenidamente.
El ángulo entre dos vectores es importante en las aplicaciones de machine learning. Por ejemplo, si tenemos dos grupos de palabras y cada uno corresponde a un vector, dependiendo del valor del ángulo entre estos podemos decir si los grupos de palabras son similares o no.
El producto interno como función de una norma y su visualización
Otra forma de obtener el mismo resultado que realizando el producto interno entre el transpuesto de un vector v1 y un vector v2, es realizando, el producto la normal dos de un vector v1 por la normal dos de un vector v2 por el coseno del angulo que forman es decir:
$v1^t.dot(v2) = norm^2(v1).norm^2(v2).cos(α)$
Nota:
Esto es utilizado en machine learning para encontrar diferencias entre documentos por ejemplo, ya que si evaluo una serie de oraciones como vectores y comparo con otra, si el angulo que forman es muy chico podemos concluir que las dos cadenas de oraciones se parecen, si por el contrario el angulo que forman es de 90 grados podemos decir que no se parecen en nada.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
v1 = np.array([0,0,0,3])v2 = np.array([0,0,3,3])plt.xlim(-2,6)plt.ylim(-2,6)plt.quiver([v1[0],v2[0]],[v1[1],v2[1]],[v1[2],v2[2]],[v1[3],v2[3]], angles='xy', scale_units='xy', scale=1, color = sns.color_palette())plt.show()
Como calculamos el angulo que forman?
# Para los arreglos.v1 = np.array([0,3])v2 = np.array([3,3])# Realizamos su producto interno.prod_in = v1.T.dot(v2)# Calculamos las L2.v1_norm = np.linalg.norm(v1)v2_norm = np.linalg.norm(v2)# Para calcular el nos aprovechamos de la igualdad de:# v1^t * v2 = L2(v1) * L2(v2) * cos(a).cos_a = prod_in /(v1_norm * v2_norm)# Despejamos el cos.ang_rad_a = np.arccos(cos_a)# Pasamos de radiantes a grados.ang_gra_a = np.rad2deg(ang_rad_a)print(ang_gra_a)# Nos devuelve 45 lo que nos dice que hay entre v1 y v2 45 grados.
Les recomiendo ver la serie de videos Esencia del Álgebra Lineal del canal 3blue1brown en Youtube. Explica la razón de las cosas, esta forma que tiene el profesor realmente no me cierra, es repetir formulas como recetas de cocina. Ademas viejísimo el material...
" En álgebra lineal, la norma de un vector es unnúmero que indica la longitud o tamaño de un vector en el espacio. También se le conoce como magnitud o longitud del vector" , creo que se debe aclarar... reviso y re-veo, y el profesor no brinda una definición concreta, mas allá de sus calculos... en mi caso se me hizo dificil comprender el concepto de norma.
Crack , en el incio cunado explico que es una norma lo explico re claramente jaja
Para quien desee otra forma de explicar esta clase.
El objetivo principal de esta propiedad es hallar el ángulo que separa dos vectores, que muchas veces, está relacionado con la correlación entre dos variables en otros cursos que encontrarás aquí.
Aspectos a tener en cuenta :
Calcular la NORMA/MAGNITUD de un vector con el producto interno de si mismo y su T
El PRODUCTO INTERNO de dos vectores se puede expresar como la norma/magnitud de cada vector multiplicado por el ángulo que están formando. Es conocido en álgebra como la ley del coseno.
Tiene un uso muy peculiar e intrigante a la vez, siempre me quedo conforme al final de sus clases al escuchar los usos que se le pueden dar a lo que aprendemos
La formula para calcular el producto de 2 vectores a partir de la norma y el angulo que forman es basicamente una maravilla, en teoria de circuitos se puede utilizar en circuitos y calcular por ejemplo el factor de potencia (FP).
En machine learniing se conoce como el coseno similitud entre dos vectores. entre más pequeño sea el angulo, más similitud habrá entre los vectores comparados.
Es distinto vector.T.dot(vector) que vector.dot(vector)? hice algunas pruebas y me dan lo mismo, pero al inicio del video el profe especifico que era la Traspuesta para que la norma y el producto interno del vector_t y el vector fueran lo mismo.
producto punto: v1 ° v2 = |v1|*|v2|cos x
producto cruz : v1 X v2 = |v1||v2|*sin x
Yo no se si soy no más ignorante en matemáticas, pero no me gusta como enseña, no entiendo, va muy rápido, cero pedagogía
No se si por él, pero diría que mas por mí.. no lo entiendo todo.
para entender las implicaciones de esta dualidad les recomiendo este video
Producto escalar y la dualidad | Esencia de álgebra lineal, capítulo 7