🧮 Computational Mathematics

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

135 — PCA desde álgebra lineal

intermedio-avanzado clase 15 de 20 4 horas demostración pca

PCA es la autodescomposición de la covarianza, y equivale a la SVD de los datos centrados.

Fórmulas

Σ = XᵀX/(n−1)  con X centrada
componentes = autovectores de Σ
varianza explicada = λᵢ / Σλⱼ

Desarrollo

PCA busca las direcciones de máxima varianza de un conjunto de datos. La primera componente es la dirección en la que los datos más se dispersan; la segunda, la de máxima varianza entre las ortogonales a la primera, y así sucesivamente. Esas direcciones son los autovectores de la matriz de covarianza, y sus autovalores son las varianzas correspondientes.

Centrar los datos es obligatorio, no un preprocesado opcional. Sin centrar, la primera componente apunta hacia la media en lugar de hacia la dirección de máxima dispersión, y el resultado carece de sentido. Es el error más frecuente al implementar PCA a mano.

Escalar es otra decisión, y esta sí es opcional pero consecuente. Si las variables están en unidades distintas —euros y kilómetros—, la de mayor magnitud domina la covarianza y la primera componente la sigue. Estandarizar antes de PCA equivale a hacer PCA sobre la matriz de correlación en lugar de sobre la de covarianza.

PCA y SVD son el mismo cálculo. La SVD de la matriz de datos centrados da directamente las componentes en V y las varianzas en σ²/(n−1), sin necesidad de formar la covarianza —que, como toda matriz XᵀX, eleva al cuadrado el número de condición—. Por eso las implementaciones profesionales usan SVD.

Una advertencia que conviene repetir: PCA es no supervisado. Maximiza varianza, no capacidad discriminativa, y puede descartar precisamente la dirección que separa las clases. Para eso está el análisis discriminante lineal, que sí usa las etiquetas.

Ejemplo trabajado

PCA sobre diez observaciones bidimensionales.

medias: (1.81, 1.91)

matriz de covarianza:
  [[0.6166, 0.6154],
   [0.6154, 0.7166]]

autovalores: 1.2840,  0.0491
varianza explicada por PC1: 96.32 %

PC1 = (0.6779, 0.7352)

Proyecciones (primeras 5):
  0.8280, −1.7776, 0.9922, 0.2742, 1.6759

Conclusión: los datos son casi unidimensionales.

Qué calcula el laboratorio

PCA como autodescomposición de la covarianza.

python classes/part-06-algebra-lineal-ii-descomposiciones-y-tensores/135-pca-desde-algebra-lineal/lab.py
compmath run 135

Salidas del laboratorio (8)

Muestra de la ejecución real

{
  "observaciones": 10,
  "medias": [
    1.81,
    1.91
  ],
  "covarianza": [
    [
      0.616556,
      0.615444
    ],
    [
      0.615444,
      0.716556
    ]
  ],
  "autovalores": [
    1.284028,
    0.049083
  ],
  "varianza_explicada_PC1_%": 96.3181,
  "PC1": [
    0.677873,
    0.735179
  ]
}

Errores comunes

Dónde se usa

Reducción de dimensionalidad, visualización, eliminación de ruido, compresión y detección de multicolinealidad.

Idea rectora de la parte

Broadcasting y einsum son notación, no algoritmos nuevos.

Error a evitar

Confundir el orden de los índices al reordenar un tensor.

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