¿Qué son las normas y cómo se utilizan en aprendizaje automático?
Las normas son herramientas fundamentales en el aprendizaje automático y otras áreas de la ciencia de datos utilizadas para medir diversas propiedades de los vectores. Existen diferentes tipos de normas que se emplean para calcular errores, distancias y más. En este artículo, exploraremos las normas más comunes y discutiremos cómo se pueden implementar utilizando la biblioteca NumPy en Python. Las normas que abordaremos incluyen L0, L1, L2 y la norma infinita.
¿Cómo calcular la norma L0?
La norma L0 es la más sencilla de entender: calcula la cantidad de elementos distintos de cero en un vector. Es útil para determinar elementos no nulos, por ejemplo, al evaluar la cantidad de compras realizadas por usuarios, donde cada componente del vector representa una compra. Este es el procedimiento para calcular la norma L0 en Python con NumPy:
import numpy as np
# Definimos un vectorvector = np.array([1,2,0,5,6,0])# Calculamos la norma L0norma_l0 = np.linalg.norm(vector,ord=0)print(norma_l0)# Devuelve 4, hay 4 elementos distintos de cero.
¿Cómo se calcula la norma L1?
La norma L1, también conocida como norma de suma absoluta, entrega la suma de los valores absolutos de los componentes del vector. Esta norma cobra relevancia en situaciones donde necesitamos una medida que dependa linealmente de cada componente del vector:
# Definimos un vector con valores positivos y negativosvector = np.array([1,-1,1,-1,1])# Calculamos la norma L1norma_l1 = np.linalg.norm(vector,ord=1)print(norma_l1)# Devuelve 5, la suma de valores absolutos.
¿Por qué es importante la norma L2?
La norma L2 es probablemente la más conocida. Está relacionada con la distancia euclidiana, la medida estándar en geometría para calcular la distancia entre dos puntos en un espacio. Se utiliza ampliamente en aprendizaje automático debido a su simplicidad y eficacia computacional. Al elevar los componentes al cuadrado en lugar de tomar la raíz cuadrada, es posible optimizar algoritmos para mejorar el rendimiento:
# Definimos un vectorvector = np.array([1,1])# Calculamos la norma L2norma_l2 = np.linalg.norm(vector)print(norma_l2)# Devuelve aproximadamente 1.41, la raíz cuadrada de 2.# Calculamos la norma L2 al cuadradonorma_l2_squared = np.linalg.norm(vector)**2print(norma_l2_squared)# Devuelve 2.# También se puede calcular usando el producto internonorma_l2_squared_internal = np.dot(vector, vector)print(norma_l2_squared_internal)# Devuelve 2.
¿Qué es la norma infinita y cómo se calcula?
La norma infinita proporciona el valor absoluto más grande de un vector. Es útil en situaciones en las que necesitamos detectar valores extremos que puedan ser significativos para un análisis más detallado. Su cálculo en Python es sencillo usando NumPy:
# Definimos un vector con un valor prominentevector = np.array([1,2,3,-100])# Calculamos la norma infinitanorma_inf = np.linalg.norm(vector,ord=np.inf)print(norma_inf)# Devuelve 100, el valor absoluto máximo del vector.
Las normas son herramientas versátiles y potentes en el aprendizaje automático, desempeñando un papel crucial para evaluar diferentes aspectos de los datos de entrada. Su correcta aplicación puede mejorar significativamente la eficiencia de los algoritmos. A medida que avances en tus estudios y aplicaciones de machine learning, comprender y utilizar estas normas te será cada vez más indispensable. ¡Sigue aprendiendo y explorando el vasto mundo del aprendizaje automático!
La norma se usa en machine learning para encontrar errores.
La norma L0: devuelve la cantidad de elementos diferentes de 0 del vector.
La norma L1: devuelve la suma de los valores absolutos de los elementos del vector.
La norma L2: La magnitud del vector desde su origen.
La norma infinito: devuelve el valor absoluto más grande del vector
Gracias por el aporte.
Un aporte adicional que nohe visto se explique de forma amplia en Platzi, las normas se usan para determinar el modulo de regularización en la construcción de un modelo. La regularización se usa para castigar la complejidad de un modelo y evitar overfitting, las más comunes son L2 para simplicidad y L1 para esparcidad. Para más información se puede consultar aca en el crash course de Machine Learning de Google:
Aca se puede ver el cambio de los pesos de un modelo luego de utilizar regularización:
Gracias por el aporte
Gracias por el aporte y por el link del crash course
Excelente clase, aquí las notas que tomé
# Las normas generalmente se llaman por la letra 'L'# L0:Cantidad de elementos de nuestro vector distintos de 0# L1:La suma de los valores absolutos de los componentes de
# nuestro vector
# L2:'La norma que conocemos',La magnitud de un vector, o distancia al origen.# En machine learning se usa mucho la norma L2 pero elevada al cuadrado
# es decir,L2^2.La ventaja de esto es computacional.# Podríamos reunir muchos vectores en una matriz X, calcular X.dot(x_t)# y tendríamos allí el cuadrado de las normas de todos esos vectores.#L_infinito:Nos devuelve el mayor valor dentro de los valores absolutos
# de los componentes de nuestro vector```
Gracias por compartir Andres
Buen aporte, gracias compañero!
Lo que menciona aperdomo1988 , se ve en el curso profesional de scikit learn. Basicamente la regularización se hace para evitar el overfitting agregando bias esperando disminuir la varianza. Se habla de la regresión Lasso y Ridge , ElasticNet donde alpha nos define el rango de reguarización.
Tipos de Normas
L0: Devuelve el número de elementos distintos de cero del vector.
L1: Devuelve la sumatoria de los valores absolutos del vector.
L2: Distancia euclidiana (raíz de la suma de cuadrados de los elementos)
L2**2: Distancia euclidiana al cuadrado, es computacionalmente la más fácil de hacer puesto que es el producto interno de un vector por sí mismo
Linfinito: Devuelve el mayor valor absoluto de los elementos
Sintaxis:
np.linalg.norm(vect, ord=a)
a representa el orden de la norma (0,1,2 o infinito)
para representar infinito en python usamos np.inf
Nota:
Una de las utilidades de la norma es la medición del error
Algo que puede servir en el futuro es
para L2 | L3 | L(infinito), con un negativo antes
print(np.linalg.norm(v1,ord=-1))
Puedes obtener lo contrario
-L1= mínimo del valor absoluto
-L2 = Valor mínimo, pero la verdad no entiendo como sale
-L(inf) = Devuelve el valor absoluto mínimo
alguno podria aclarame una duda bastante simple, por que siempre al hacer el prducto interno lo hace del vector transpuesto?
Debido a que es producto de matrices, y se van a multiplicar vectores, lo que se hace es transponer para obtener las dimensiones correctas para la multiplicacion.
si se tiene dos vectores: 1xN y 1xN
si se transpone uno de los dos quedaría 1xN y Nx1, ahí si se puede multiplicar.
de manera general para tu poder hacer un producto interno, el numero de columnas del vector o matriz de la derecha tiene que ser igual al numero de filas de la matrizo vector de la derecha. Como dice tauro9905
1xN y 1xN NO se puede
1xN y Nx1 si se puede
Existen varios tipos de normas utilizadas para medir la magnitud de un vector en diferentes contextos. A continuación, se explican algunos tipos comunes de normas y su aplicación:
Norma 0 (Norma del conteo):
La norma 0 cuenta el número de elementos no nulos en un vector. Es el número de elementos distintos de cero. No es una norma en el sentido estricto, pero se utiliza como medida de la "esparsidad" de un vector.
Norma 1 (Norma de Manhattan o norma del valor absoluto):
La norma 1 se calcula sumando el valor absoluto de cada componente del vector. Representa la distancia entre los puntos en un espacio en el que solo se permite moverse en línea recta horizontal o verticalmente. Se utiliza en problemas de regularización, compresión de imágenes y procesamiento de señales.
Norma 2 (Norma Euclidiana o norma del valor cuadrado):
La norma 2, también conocida como norma Euclidiana, se calcula como la raíz cuadrada de la suma de los cuadrados de los elementos del vector. Representa la longitud euclidiana o la distancia entre dos puntos en un espacio multidimensional. Es la norma más común y se utiliza ampliamente en álgebra lineal, análisis numérico y machine learning.
Norma infinito (Norma máxima):
La norma infinito se calcula como el valor absoluto máximo de los elementos del vector. Representa el máximo impacto de cualquier componente del vector y se utiliza para medir la "magnitud máxima" en un conjunto de datos.
Norma L2 al cuadrado:
La norma L2 al cuadrado se calcula como la suma de los cuadrados de los elementos del vector, sin tomar la raíz cuadrada. Aunque no es una norma en sí misma, a menudo se utiliza en algoritmos de optimización que requieren la minimización de la norma L2 al cuadrado.
Estos diferentes tipos de normas se utilizan en diversos campos, como el procesamiento de señales, el análisis de datos, el aprendizaje automático y la optimización, para medir la magnitud, la distancia, la esparsidad y otros aspectos de los vectores.
Supongo que las normas se nombran L por la palabra en inglés Law 😮
O, si es un nombre arbitrario por convención, al menos tiene valor a modo de mnemotecnia para que no se nos olvide 😎
Alguien sabe porque el profesor mencionó estas 5 normas, pero en la anterior clase mencionó normas diferentes?
Gracias
Hola Jesús ... En la anterior clase el profesor explicó las propiedades que cumplen en general todas las normas y mostró algunos ejemplos usando la norma L2 (o distancia euclidiana) que es la más común. Espero que esto resuelva tu duda 😉
Cuando calcula la norma al cuadrado, por què transpone el vector? en mi caso lo probè y me da exactamente lo mismo cuando calculo el producto interno entre el vector y si mismo que cuando calculo el producto interno entre el vector y el vector traspuesto
A veces sucede que en vez de trabajar con un solo vector, tiene una matriz llena de muchos vectores nxN, entonces si intenta hacer el producto interno de nxN .doc ( nxN) dará error (al no tener las mismas dimensiones) pero al transponerlo será nxN .doc (Nxn) :D
Debido a que es producto de matrices, y se van a multiplicar vectores, lo que se hace es transponer para obtener las dimensiones correctas para la multiplicacion. si se tiene dos vectores: 1xN y 1xN si se transpone uno de los dos quedaría 1xN y Nx1, ahí si se puede multiplicar.
la norma al cuadrado de una resta de dos vectores sirve cuando se quiere dar peso a las distancias más separadas (cuando se elevan numeros al cuadrado, los más pequeños dejan de tener peso en comparación con los más grandes)
Que buen profesor y que buen curso. Hasta ahora de los mejores que he hecho en platzi
Estoy sorprendida con todo lo que sabe el profesor, se ve que le gusta mucho enseñar.
Esta clase me gustó mucho porque nunca había pensado en alguna aplicación de la norma hasta que dijo lo de los clientes.
En la parte en donde se calcula la norma , al momento de realizar el producto interno ¿Por qué transpone la matriz?
Lo que entendí fue que lo hizo para evitar problemas con el dimensionamiento al momento de realizar la multiplicación, pero ¿Qué pasaría si fuese una matriz de dimensiones mayores y no lo pudiesemos ver de manera tan obvia como en el caso del ejemplo?¿Cómo sabría si debería transponerlo o no? ¿Es algo que se debe de hacer siempre?
Gracias
Hola, las matriz se transforma para que las dimensiones de las matrices coincidan ya que el producto interno requiere esta condición. Por ejemplo una matriz 4x2 * 2x3 y el resultado tiene dimensión 4x3. El atributo a.shape nos dice la dimensión de la matriz
Gracias!
¡Perfecto! El cálculo de normas de vectores es fundamental en aprendizaje automático (machine learning), ya que se usa para medir distancias, errores, regularización y más. A continuación te explico cómo y por qué se usan, y te muestro cómo implementarlas en Python con ejemplos prácticos.
🧠 ¿Por qué usamos normas en Machine Learning?
Distancia entre puntos: para clasificar o agrupar datos (e.g. k-NN, clustering).
Regularización: para evitar sobreajuste en modelos (L1 y L2).
Normalización de datos: para escalar características y mejorar el entrenamiento.
Evaluación de errores: en funciones de pérdida como MSE o MAE.