Qué son las eigenfaces en PCA
Curso Avanzado de Álgebra Lineal y Machine Learning: PCA y SVD
Contenido del curso
Eigen-Análisis
Reducción de Dimensionalidad con PCA
Descomposición en Valores Singulares (SVD)
Qué son las eigenfaces en PCA
Resumen
Cuando aplicas PCA a un conjunto de datos, terminas con nuevas características que no son las originales, sino combinaciones lineales de ellas. Aprender a leer esa composición es lo que te permite interpretar componentes principales y explicar qué significan los resultados de tu modelo, especialmente cuando trabajas con imágenes y aparecen las famosas eigenfaces.
¿Qué información guarda el atributo components_ de PCA?
Cada componente principal tiene una estructura interna que te dice cuánto de cada característica original se usó para construirlo. Esa estructura vive en el atributo .components_ del objeto PCA de Scikit-learn, que no es otra cosa que la matriz de eigenvectores que ya calculaste antes [1:05].
Cada fila de esa matriz es un componente principal, y los valores dentro de la fila son las cargas o pesos: nos indican cuánto contribuye cada característica original a ese nuevo eje.
¿Qué son las cargas en PCA? Son los valores dentro de cada eigenvector que indican el peso de cada característica original en un componente principal. Mientras más alto el valor absoluto, más influye esa característica.
¿Por qué los componentes se ven como caras fantasma?
Cuando trabajas con imágenes pasa algo curioso: los componentes principales no son solo vectores de números, también son imágenes. A estos componentes se les conoce como eigenfaces o caras fantasma, y visualizarlos es la mejor manera de entender qué aprendió PCA [2:00].
Cómo visualizar eigenfaces en Google Colab
Para verlas, basta con tomar el atributo .components_ y hacer un reshape a las dimensiones originales de la imagen. En el ejemplo trabajamos con rostros de 64x64 píxeles y mostramos los primeros 10 componentes en una grilla de 2 filas por 5 columnas.
python fig, axes = plt.subplots(2, 5, figsize=(15, 6))
for i, ax in enumerate(axes.flat): ax.imshow(pca.components_[i].reshape(h, w), cmap="gray") ax.set_title(f"Componente {i+1}")
plt.suptitle("Visualización de las eigenfaces") plt.show()
El truco está en axes.flat, que convierte la matriz de subplots en una lista plana para poder iterarla cómodamente, y en cmap="gray" para mostrar la imagen en escala de grises.
Qué representa cada eigenface en un rostro
Al ejecutar el código aparecen los 10 fantasmas, y cada uno cuenta una parte de la historia del rostro [3:30]:
- Componente 1: la iluminación general del rostro, casi completamente blanco.
- Componente 2: el contraste de luz, con una mitad blanca y la otra negra.
- Componente 3: aparecen las cejas en color blanco.
- Componente 4: cejas y un poco de la mandíbula.
- Componente 5: se nota la barbilla.
- Componente 6: nariz y parte del bigote.
- Componente 7: la zona de los ojos.
El resto de componentes sigue afinando detalles cada vez más específicos. Y aquí viene lo interesante: estos pedacitos, al combinarse en una combinación lineal ponderada, reconstruyen un rostro lo más parecido posible al original.
¿Qué es una eigenface? Es un componente principal aplicado a imágenes de rostros. Funciona como un bloque de construcción visual que, sumado con otros, recrea una cara concreta.
¿Cómo te ayuda esto a explicar tu modelo?
La interpretabilidad es lo que separa un modelo de caja negra de uno que puedes defender frente a otras personas. Saber que el primer componente captura iluminación y los siguientes capturan rasgos faciales concretos te permite justificar por qué tu modelo agrupa, clasifica o reconstruye rostros de cierta forma.
En este caso los 10 primeros componentes funcionan como bloques de construcción casi a nivel original. Esa es la magia de PCA: reduce dimensionalidad sin perder la capacidad de explicar qué está pasando por dentro.
Ejercicio para practicar con tu propio dataset
Toma el ejercicio de la clase anterior y corre este mismo código con ese nuevo conjunto de datos [5:50]. Describe qué representa cada componente:
- Identifica si el primero captura iluminación.
- Revisa si el segundo captura contraste.
- Anota qué rasgo concreto aparece en el tercero, cuarto y siguientes.
Comparte tus hallazgos en los comentarios y compara con lo que viste en las eigenfaces de los rostros.
¿Y si tu matriz de datos no es cuadrada?
PCA se basa en analizar eigenvectores de una matriz cuadrada: la matriz de covarianza. Pero no siempre tus datos te van a regalar matrices cuadradas, y ahí PCA se queda corto.
La buena noticia es que existe una descomposición más general que funciona con cualquier matriz: la descomposición en valores singulares o SVD. Esa es la herramienta que vas a aprender a continuación para extender todo lo que ya sabes de reducción de dimensionalidad.