Valores y vectores propios: el esqueleto de una matriz
En toda transformación lineal hay direcciones especiales que no rotan — solo se estiran o se encogen. Los vectores propios son esas direcciones; los valores propios son cuánto se estiran.
Idea central: cuando aplicás una matriz a un vector cualquiera, ese vector cambia de dirección y de tamaño. Pero hay direcciones especiales en las que solo cambia el tamaño — la dirección se mantiene. Esas son las direcciones propias de la matriz, y el factor de estiramiento es el valor propio. Esas dos cosas, juntas, capturan el esqueleto de la transformación.
1 Casi todos los vectores rotan. Pero algunos no.
En la lección anterior viste cómo una matriz 2x2 deforma una "F" entera: la rota, la estira, la sesga. Cada vector que dibujemos en el plano se mueve a una dirección distinta después de aplicarle la matriz.
Pero acaba de aparecer una pregunta sutil: ¿hay direcciones que la matriz respeta? O sea, ¿hay vectores que después de la transformación quedan apuntando exactamente en la misma dirección que antes (aunque tal vez con otro tamaño)?
La respuesta sorprendente: casi siempre sí. Para casi cualquier matriz, hay una o dos líneas en el plano sobre las que los vectores no rotan. Solo se estiran. Esas son las direcciones propias.
2 Definición: A · v = λ · v
Un vector v es un vector propio de la matriz A si al aplicarle A el resultado es el mismo vector multiplicado por un escalar λ:
Pensalo así: aplicar la matriz A al vector v produce el mismo vector pero estirado. No rota, no se sesga. La dirección se mantiene. El número λ (lambda) se llama valor propio y dice cuánto se estiró.
- Si
λ = 2, el vector se duplica en tamaño. - Si
λ = 0.5, el vector se reduce a la mitad. - Si
λ = -1, el vector se voltea (apunta al lado opuesto), pero sigue sobre la misma línea. - Si
λ = 1, el vector queda exactamente igual: la matriz no lo afecta en lo más mínimo.
3 Cómo se calculan
Para una matriz A = [[a, b], [c, d]] los valores propios salen de resolver una ecuación cuadrática que se llama ecuación característica:
Eso da una parábola en λ: λ2 − (a+d)λ + (a·d − b·c) = 0. Aplicás la fórmula resolvente y sacas dos valores propios λ1 y λ2. Después, para cada uno, resolvés (A − λI) v = 0 para encontrar el vector propio correspondiente.
No te preocupes por hacer la cuenta a mano: numpy tiene numpy.linalg.eig y te resuelve todo en una línea. Lo importante es que entiendas qué es lo que sale.
Si la matriz hace una rotación pura (sin estiramiento), no hay direcciones invariantes en el plano real — todo vector cambia de dirección al rotar. Matemáticamente la ecuación característica da valores propios complejos (con parte imaginaria), pero geométricamente eso significa "no hay líneas que la matriz respete". El sandbox de abajo te lo va a mostrar.
4 Tu turno: mové la matriz y mirá los ejes que sobreviven
Mismos cuatro sliders que la lección anterior. Ahora, además de la "F" deformada, ves dos lí>neas punteadas: las direcciones propias de la matriz. Cualquier punto que esté sobre esas líneas, después de aplicar la matriz, sigue sobre la misma línea (solo se estira o encoge). Los puntos que estén fuera, rotan.
Sandbox interactivo
Mové los 4 sliders. Las líneas punteadas rojas y verdes son las direcciones propias.
- Tocá "Simétrica": las dos direcciones propias se ven a 45° (en diagonal). La F se estira fuerte sobre la línea roja.
- Tocá "Diagonal": las direcciones propias coinciden con los ejes X e Y. Por eso la diagonalización es un truco fundamental.
- Tocá "Rotación 90°": desaparecen las líneas punteadas. La matriz no respeta ninguna dirección del plano real. Los valores propios son complejos.
- Tocá "Reflejo": dos valores propios reales, +1 y -1. La direcció>n con λ = +1 (eje Y) queda intacta; la de λ = -1 (eje X) se voltea.
5 Por qué importan en IA y ciencia de datos
Los valores y vectores propios son una de las herramientas más reutilizadas en aplicaciones reales:
- Análisis de Componentes Principales (PCA): reducir dimensiones de datos. Los vectores propios de la matriz de covarianza son las "direcciones de máxima varianza" — la versión vectorial de la varianza que viste en el Módulo 1.
- Estabilidad de redes neuronales: si los valores propios de las matrices de pesos son muy grandes, la red explota; si son muy chicos, los gradientes se desvanecen.
- PageRank y grafos: el algoritmo que ordenó la web por décadas es esencialmente buscar el vector propio de una matriz gigante.
- Sistemas dinámicos: predecir si un sistema converge, oscila o explota se reduce a mirar los valores propios de la matriz que describe la dinámica.
6 Variante 1: diagonalización (A = P D P−1)
Si una matriz A tiene vectores propios reales que cubren todo el espacio (en 2D, dos vectores propios linealmente independientes), entonces se puede descomponer de una forma muy útil:
donde P es la matriz cuyas columnas son los vectores propios, y D es una matriz diagonal con los valores propios.
El razonamiento intuitivo: aplicar A es lo mismo que (1) rotar al sistema donde los ejes son los vectores propios, (2) estirar cada eje por su valor propio, (3) volver al sistema original.
¿Por qué importa? Porque elevar una matriz a una potencia se vuelve trivial: A10 = P · D10 · P−1, y como D es diagonal, D10 es solo elevar cada elemento de la diagonal al 10. Sin diagonalizar, tendrías que multiplicar A por sí misma 10 veces — una pesadilla computacional.
Anisotropía del yacimiento
Un cuerpo mineralizado rara vez es isótropo — las leyes varían más en una dirección que en otra. Eso se representa con una matriz simétrica de covarianza espacial. Diagonalizar esa matriz te entrega:
- Vector propio 1: dirección de mayor variabilidad (suele ser el rumbo de la veta)
- Vector propio 2: dirección perpendicular en el plano
- Vector propio 3: dirección del manteo (inclinación)
Con esos tres ejes propios al yacimiento, los análisis posteriores (variogramas, kriging) se vuelven mucho más eficientes y los modelos predicen mejor.
Diagonalizar = "encontrar los ejes naturales del cuerpo mineralizado"Cadenas de Markov para procesos minero-metalúrgicos
Si modelás un proceso secuencial con una matriz de transición T (probabilidades de pasar de estado a estado), entonces Tn te dice las probabilidades después de n pasos. Diagonalizando T obtenés Tn directamente en una operación.
7 Variante 2: SVD (Singular Value Decomposition) — la navaja suiza
La diagonalización funciona solo si la matriz es cuadrada y tiene suficientes vectores propios. La SVD es una descomposición más general que siempre existe, incluso para matrices rectangulares:
donde U y V son ortogonales (rotaciones) y Σ es diagonal con los valores singulares (siempre positivos, ordenados de mayor a menor). Es la operación más usada en ciencia de datos — la base de PCA, sistemas de recomendación, compresión de imágenes y muchísimo más.
Lectura geométrica: cualquier transformación lineal se puede descomponer en tres pasos más simples: rotar (VT), estirar los ejes (Σ), rotar de nuevo (U). Los valores singulares en Σ dicen cuánto se estira cada dirección.
El primer valor singular es siempre el más grande. Si los siguientes son mucho más pequeños, significa que la transformación está "casi" comprimiendo todo a una dimensión principal. Esa es la base de la compresión: si descartás los valores singulares chicos, casi no perdés información.
Compresión de imágenes de dron minero
Un dron mapea la mina y genera imágenes aéreas de alta resolución. Cada imagen es una matriz enorme de pixels. La SVD descompone esa matriz y te permite quedarte solo con los k valores singulares más grandes:
- k = 200 (todos): imagen original, archivo grande
- k = 50: imagen casi indistinguible visualmente, archivo 75% más liviano
- k = 10: imagen reconocible aunque borrosa, archivo 95% más liviano
Esto se llama "low-rank approximation" y permite almacenar y transmitir las imágenes ocupando una fracción del espacio original sin perder utilidad práctica.
SVD = compresión inteligente que mantiene lo importanteLimpieza de ruido en señales de sensores
Si tenés mediciones contaminadas por ruido (vibraciones parásitas, interferencia eléctrica), la SVD te ayuda a separar la señal principal (valores singulares grandes) del ruido (valores singulares pequeños). Reconstruí>s la matriz usando solo los valores singulares grandes y obtenés una versión más limpia de la señal.
SVD = filtro estadístico que sabe qué es señal y qué es ruidoDetección de patrones operacionales
Aplicada sobre la matriz de mediciones de planta a lo largo del tiempo (filas = tiempos, columnas = variables), la SVD identifica los "modos" operacionales dominantes — las combinaciones de variables que más información contienen sobre el estado del proceso. Es la base del control multivariable de procesos.
8 Variante 3: PCA (Análisis de Componentes Principales)
El uso más célebre de los vectores propios en ciencia de datos: PCA. Reduce un dataset con muchas variables correlacionadas a un dataset con pocas variables independientes, conservando la máxima cantidad de información posible.
La receta básica de PCA:
- Estandariza los datos (Z-scores, lección 1.1)
- Calcula la matriz de covarianza entre variables (lección 1.2)
- Diagonaliza esa matriz: vectores propios = "componentes principales"
- Proyecta los datos sobre los k vectores propios con mayores valores propios
El razonamiento intuitivo: si dos variables están muy correlacionadas, conociendo una ya sabés casi todo sobre la otra. PCA detecta esa redundancia. Crea una nueva variable artificial (PC1) que es la "mejor combinación lineal" de las originales y te da el máximo de información en menos dimensiones.
De 30 variables operacionales a 3 componentes
Una planta concentradora moderna mide 30+ variables en tiempo real: pH celdas, flujos de reactivos, densidades, presiones, temperaturas, granulometría, niveles, voltajes. Es imposible visualizar 30 variables a la vez.
PCA aplicado a esos 30 datos durante 3 meses suele reducir la complejidad a 3-5 componentes principales que explican el 90% de la variabilidad. Esos componentes son combinaciones lineales interpretables: PC1 puede ser "carga total al proceso", PC2 puede ser "rendimiento metalúrgico", PC3 puede ser "uso de reactivos".
PCA = 30 columnas se reducen a 3-5 sin perder lo esencialDetección de anomalías multivariables
Una vez que tenés las 3 componentes principales, monitorés un proceso siguiendo solo esos 3 números. Cuando una observación se sale del "espacio normal" de los 3 componentes, es una anomalía multivariable — algo que solo se ve cruzando varias variables a la vez, no en una sola.
Esta es la base del monitoreo estadístico multivariable de procesos industriales (MSPC), más sensible que monitorear cada variable por separado.
PCA + MSPC = detectar fallas que ninguna variable sola revelaCaracterización geoquímica de yacimientos
Cuando tenés ensayos de 20+ elementos químicos por testigo de perforación, PCA revela las "firmas" geoquímicas dominantes: porfido cuprifero, pórfido aurífero, epitermal de baja sulfuración, etc. Cada firma agrupa elementos que aparecen juntos, y PCA los reúne automáticamente en componentes principales.
PCA en geoquímica = identifica el tipo de yacimiento sin pre-clasificar+ Más parientes del concepto
El mundo de las descomposiciones matriciales es enorme. Otras herramientas que vale la pena conocer:
Descomposición QRVer▾
Cualquier matriz se descompone como A = Q · R, donde Q es ortogonal y R es triangular superior. Es la base de los algoritmos más estables para resolver sistemas lineales y de mínimos cuadrados (regresión). Es el método numérico que usa numpy.linalg.lstsq por dentro.
Multiplicidad algebraica vs geométricaVer▾
Un valor propio puede aparecer varias veces (multiplicidad algebraica) pero tener menos vectores propios independientes asociados (multiplicidad geométrica). Cuando ambas no coinciden, la matriz no es diagonalizable — necesitás la forma de Jordan, una generalización más sutil.
Matrices definidas positivasVer▾
Matrices simétricas con todos los valores propios positivos. Aparecen en covarianzas, métricas geométricas, energía en sistemas físicos, y son las que permiten que métodos como Cholesky (factorización eficiente) y gradiente conjugado funcionen. Si una matriz que deberí>a ser definida positiva tiene valores propios negativos, hay un error en los datos.
PageRank (vectores propios para grafos)Ver▾
El algoritmo que ordenó la web durante décadas es esencialmente calcular el vector propio dominante de la matriz de transición del grafo de páginas web. La página más importante es la que más aparece en el vector propio asociado al valor propio mayor (1). Mismo principio aplica a redes de citas científicas, redes sociales o cualquier grafo dirigido.
Ver el código en Python: cinco snippets, de eigenvalores a PCA real Click para abrir
Empezamos calculando eigenvalores a mano de una matriz 2x2 y vamos escalando hasta aplicar PCA a un dataset.
1. Eigenvalores 2x2 a mano (resolver la ecuación característica):
# Matriz A = [[2, 1], [1, 2]] a, b, c, d = 2, 1, 1, 2 # Ecuacion caracteristica: (a-L)(d-L) - bc = 0 # L^2 - (a+d)L + (ad-bc) = 0 T = a + d # traza D = a * d - b * c # determinante # Resolvente: L = (T +/- sqrt(T^2 - 4D)) / 2 disc = T**2 - 4 * D sqrt_d = disc ** 0.5 lambda_1 = (T + sqrt_d) / 2 lambda_2 = (T - sqrt_d) / 2 print(f"lambda_1 = {lambda_1}") print(f"lambda_2 = {lambda_2}")
2. Lo mismo con numpy:
import numpy as np A = np.array([[2.0, 1.0], [1.0, 2.0]]) valores, vectores = np.linalg.eig(A) print("Valores propios:", valores) print("Vectores propios (columnas):") print(vectores.round(3)) # Verificar A @ v = lambda * v para cada par for i in range(2): v = vectores[:, i] print(f" A @ v_{i+1} = {A @ v}") print(f"lambda_{i+1} * v_{i+1} = {valores[i] * v}")
3. Diagonalizar A = P D P^-1:
import numpy as np A = np.array([[4.0, 1.0], [2.0, 3.0]]) valores, P = np.linalg.eig(A) D = np.diag(valores) P_inv = np.linalg.inv(P) # Verificar la descomposicion A_reconstruida = P @ D @ P_inv print("A original:"); print(A) print("A reconstruida:"); print(A_reconstruida.round(3)) # A^10 calculado a la antigua vs. usando diagonalizacion A10_lento = np.linalg.matrix_power(A, 10) A10_rapido = P @ np.diag(valores**10) @ P_inv print(" A^10 lento:"); print(A10_lento.round(2)) print("A^10 con diagonalizacion:"); print(A10_rapido.round(2))
4. SVD y compresión:
import numpy as np # Matriz 6x4 cualquiera np.random.seed(42) A = np.random.rand(6, 4) * 10 # SVD: A = U @ diag(S) @ V.T U, S, Vt = np.linalg.svd(A, full_matrices=False) print("Valores singulares (orden decreciente):", S.round(2)) # Reconstruccion completa A_full = U @ np.diag(S) @ Vt print(" Error de reconstruccion completa:", np.abs(A - A_full).max()) # Reconstruccion con solo k=2 (los 2 valores mas grandes) k = 2 A_k = U[:, :k] @ np.diag(S[:k]) @ Vt[:k, :] error_relativo = np.linalg.norm(A - A_k) / np.linalg.norm(A) print(f"Error con k={k}: {error_relativo*100:.1f}% (perdida de informacion)")
5. PCA aplicado a datos operacionales simulados:
import numpy as np from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler # Simular 200 mediciones de 5 variables operacionales correlacionadas np.random.seed(42) n = 200 ton = np.random.normal(10000, 1500, n) # tonelaje pH = 10.5 - 0.0001 * (ton - 10000) + np.random.normal(0, 0.1, n) flujo = 500 + 0.03 * ton + np.random.normal(0, 20, n) densidad = 1.3 - 0.00001 * ton + np.random.normal(0, 0.02, n) recup = 88 + 0.0005 * ton + np.random.normal(0, 1.5, n) X = np.column_stack([ton, pH, flujo, densidad, recup]) # Estandarizar antes de PCA (z-scores) X_std = StandardScaler().fit_transform(X) # PCA pca = PCA() X_pca = pca.fit_transform(X_std) print("Varianza explicada por cada componente:") for i, v in enumerate(pca.explained_variance_ratio_): print(f" PC{i+1}: {v*100:.1f}%") acumulada = pca.explained_variance_ratio_.cumsum() print(f" 3 primeras componentes explican {acumulada[2]*100:.1f}%") print("De 5 variables podemos quedarnos con 3 sin perder lo esencial.")
9 Pregunta de chequeo
Una matriz tiene valor propio λ = 1 con vector propio v. ¿Qué le pasa al vector v cuando se le aplica la matriz?
Hasta acá vimos vectores y direcciones sobre el plano. Pero las matrices reales de IA viven en miles o millones de dimensiones. Para hablar de eso necesitamos un lenguaje más general: espacios vectoriales y normas. Es lo que sigue.
Regístrate al boletín MathPlay
De la idea al laboratorio que funciona: datos, simulación, visualización e IA explicadas con imágenes que se mueven. Te escribo cuando hay algo nuevo que vale la pena compartir.
Sin calendario fijo. Sin spam.
Listo. Te escribo cuando haya algo nuevo.
