La Descomposición en Valores Singulares (SVD, por sus siglas en inglés: Singular Value Decomposition) es una de las herramientas más poderosas y versátiles del álgebra lineal aplicada a datos, machine learning, compresión, procesamiento de imágenes, recomendadores, y más.
🔷 ¿Qué es la descomposición SVD?
Para cualquier matriz A∈Rm×nA \in \mathbb{R}^{m \times n}, se puede descomponer como:
A=UΣVTA = U \Sigma V^T
Donde:
- U∈Rm×mU \in \mathbb{R}^{m \times m}: matriz ortogonal con vectores propios de AATA A^T
- Σ∈Rm×n\Sigma \in \mathbb{R}^{m \times n}: matriz diagonal rectangular con los valores singulares de AA
- VT∈Rn×nV^T \in \mathbb{R}^{n \times n}: transpuesta de matriz ortogonal con vectores propios de ATAA^T A
📌 ¿Para qué sirve?
- Reducción de dimensiones (PCA usa SVD)
- Compresión de imágenes
- Eliminación de ruido
- Sistemas de recomendación (Netflix, Amazon)
- Resolver sistemas sobredeterminados o mal condicionados
🐍 Ejemplo en Python con NumPy
import numpy as np
# Matriz original (puede no ser cuadrada)
A = np.array([[3, 1, 1],
[-1, 3, 1]])
# Descomposición SVD
U, S, VT = np.linalg.svd(A)
print("Matriz U:")
print(U)
print("\nValores singulares (S):")
print(S)
print("\nMatriz V transpuesta (V^T):")
print(VT)
# Para reconstruir A:
Sigma = np.zeros((U.shape[0], VT.shape[0]))
np.fill_diagonal(Sigma, S)
A_reconstructed = U @ Sigma @ VT
print("\nMatriz A reconstruida:")
print(A_reconstructed)
📊 ¿Qué representan los valores singulares?
Los elementos de Σ\Sigma (valores singulares) indican cuánta información (energía, varianza) está contenida en cada componente. Se ordenan de mayor a menor.
🎯 Reducción de Dimensión con SVD
Si solo usas los primeros kk valores singulares:
Ak=UkΣkVkTA_k = U_k \Sigma_k V_k^T
Esto da una aproximación de menor rango, ideal para:
- Visualización
- Compresión
- Velocidad de cómputo
📌 Resumen
ComponenteSignificadoUUDirecciones principales de las filas (izquierda)Σ\SigmaImportancia relativa (energía) de cada direcciónVTV^TDirecciones principales de las columnas (derecha)