🧮 Computational Mathematics

Inicio · Parte 06 — Álgebra lineal II: descomposiciones y tensores

133 — SVD y compresión

intermedio-avanzado clase 13 de 20 4 horas demostración svd_compression

Truncar la SVD da la mejor aproximación de rango k que existe, no una buena.

Fórmulas

Aₖ = Σᵢ₌₁ᵏ σᵢ uᵢ vᵢᵀ
‖A − Aₖ‖_F = √(Σᵢ₌ₖ₊₁ σᵢ²)
energía retenida = Σᵢ₌₁ᵏ σᵢ² / Σ σᵢ²

Desarrollo

El teorema de Eckart-Young (1936) es de los resultados más fuertes del álgebra lineal aplicada: entre todas las matrices de rango k, la que mejor aproxima a A es la SVD truncada, y el error cometido es exactamente la raíz de la suma de los cuadrados de los valores singulares descartados.

«La mejor» es una afirmación de optimalidad, no una recomendación heurística. No existe ninguna otra matriz de rango k más cercana, ni en norma de Frobenius ni en norma espectral. Eso convierte la truncación SVD en el estándar contra el que se comparan todos los métodos de compresión y reducción de dimensionalidad.

La energía retenida —la fracción de la suma de cuadrados de los valores singulares que conservan los k primeros— es el criterio habitual para elegir k. En PCA se llama «varianza explicada» y es exactamente la misma cantidad. Un salto brusco en el espectro indica el rango natural de los datos.

El ahorro de almacenamiento es real: guardar Aₖ requiere k(m + n + 1) números en lugar de mn. Para una matriz 1000×1000 aproximada con rango 10, son 20 010 números frente a un millón. Esa es la aritmética que hace viable LoRA, que adapta modelos gigantes añadiendo matrices de rango muy bajo.

Ejemplo trabajado

Aproximación de rango 1 de una matriz 2×2.

A = [[4, 0],
     [3,−5]]

valores singulares: σ₁ = 6.0644,  σ₂ = 3.2977

Aproximación de rango 1:
  error de Frobenius = 3.2977 = σ₂          ✓ coincide con la teoría
  energía retenida = σ₁²/(σ₁²+σ₂²) = 77.2 %

Teorema de Eckart-Young:
  ninguna otra matriz de rango 1 se acerca más.

Qué calcula el laboratorio

Aproximación de rango 1 y energía retenida.

python classes/part-06-algebra-lineal-ii-descomposiciones-y-tensores/133-svd-y-compresion/lab.py
compmath run 133

Salidas del laboratorio (7)

Muestra de la ejecución real

{
  "A": [
    [
      4.0,
      0.0
    ],
    [
      3.0,
      -5.0
    ]
  ],
  "valores_singulares": [
    6.324555,
    3.162278
  ],
  "aproximacion_rango_1": [
    [
      2.0,
      -2.0
    ],
    [
      4.0,
      -4.0
    ]
  ],
  "error_de_frobenius": 3.162278,
  "error_teorico_sigma2": 3.162278,
  "energia_retenida_%": 80.0
}

Errores comunes

Dónde se usa

Compresión de imágenes, PCA, sistemas de recomendación por factorización, eliminación de ruido y LoRA.

Idea rectora de la parte

PCA es la SVD de los datos centrados: no hay magia estadística adicional.

Error a evitar

Aplicar PCA sin centrar (ni escalar) los datos.

Conexión con IA

LoRA factoriza matrices de bajo rango, la atención se define con productos tensoriales y la estabilidad del entrenamiento depende del espectro de los pesos.

Bibliografía de la clase

Archivos de la clase