¡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.
📏 Normas más utilizadas
NormaFórmulaUso en MLL2 (Euclidiana)∥x⃗∥2=∑xi2\|\vec{x}\|_2 = \sqrt{\sum x_i^2}Regularización Ridge, distanciasL1 (Manhattan)( |\vec{x}|_1 = \sumx_iL∞ (máximo)( |\vec{x}|_\infty = \maxx_i
🧪 Ejemplo 1: Comparación de normas en vectores
import numpy as np
x = np.array([3, -4, 5])
l1 = np.linalg.norm(x, ord=1)
l2 = np.linalg.norm(x) # por defecto ord=2
linf = np.linalg.norm(x, ord=np.inf)
print(f"L1: {l1:.2f} | L2: {l2:.2f} | L∞: {linf:.2f}")
Salida:
L1: 12.00 | L2: 7.07 | L∞: 5.00
🤖 Ejemplo 2: Distancia entre vectores (e.g., k-NN)
from sklearn.metrics import pairwise_distances
a = np.array([[1, 2]])
b = np.array([[4, 6]])
dist_euclid = pairwise_distances(a, b, metric='euclidean')
dist_manhat = pairwise_distances(a, b, metric='manhattan')
print("Distancia Euclidiana:", dist_euclid[0][0])
print("Distancia Manhattan:", dist_manhat[0][0])
🧰 Ejemplo 3: Regularización en regresión
from sklearn.linear_model import Ridge, Lasso
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
# Datos sintéticos
X, y = make_regression(n_samples=100, n_features=5, noise=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Regresión con regularización L2 (Ridge)
modelo_ridge = Ridge(alpha=1.0)
modelo_ridge.fit(X_train, y_train)
print("Coeficientes Ridge:", modelo_ridge.coef_)
# Regresión con regularización L1 (Lasso)
modelo_lasso = Lasso(alpha=0.1)
modelo_lasso.fit(X_train, y_train)
print("Coeficientes Lasso:", modelo_lasso.coef_)
- Ridge tiende a reducir los coeficientes.
- Lasso tiende a hacer que algunos sean exactamente 0 → selección de características.
✏️ Ejemplo 4: Normalizar vectores (unit norm)
from sklearn.preprocessing import Normalizer
X = np.array([[3, 4], [1, -1], [0, 5]])
normalizador = Normalizer(norm='l2') # también acepta 'l1' o 'max'
X_norm = normalizador.fit_transform(X)
print("Vectores normalizados:\n", X_norm)
✅ Conclusión
Las normas son herramientas esenciales en ML para:
- Medir similitud o distancia (clustering, k-NN).
- Reducir el sobreajuste (regularización L1/L2).
- Escalar y preparar datos (normalización).