Reducción de Dimensionalidad con Análisis de Componentes Principales

Clase 9 de 37Curso Profesional de Machine Learning con scikit-learn

Contenido del curso

Optimización de features

Resumen

Trabajar con datasets que contienen decenas o cientos de variables puede convertirse en un problema real para tus modelos de machine learning. No todas esas variables aportan información útil, y muchas veces sus relaciones internas son tan complejas que dificultan el entrenamiento. Aquí es donde entra en juego el PCA (Principal Component Analysis), también conocido como Análisis de Componentes Principales, uno de los algoritmos de reducción de la dimensionalidad más utilizados en la industria.

¿Cuándo necesitas reducir la dimensionalidad de tu dataset?

Antes de aplicar cualquier técnica, es fundamental reconocer las señales que indican que tu modelo podría beneficiarse de un paso previo de reducción. Estas son las situaciones más comunes [0:37]:

  • Tu dataset tiene un número muy grande de features y no estás seguro de que todos sean útiles para predecir la variable de salida.
  • Las relaciones entre variables no son linealmente separables o presentan una alta correlación entre sí.
  • Ya entrenaste tu modelo y detectaste overfitting, es decir, el modelo memoriza los datos de entrenamiento en lugar de generalizar. Una de las soluciones posibles es reducir la complejidad del modelo extrayendo solo la información relevante [1:19].
  • Tu modelo funciona bien en términos de precisión, pero el costo computacional es demasiado alto. Usar menos features puede mantener el desempeño mientras mejora el rendimiento en tiempo de ejecución [1:42].

¿Cuál es el principio detrás de PCA?

Aunque el algoritmo tiene una base matemática compleja, su idea central es bastante intuitiva. PCA busca combinar diferentes features del dataset en nuevos features artificiales que conserven la mayor cantidad de información posible, específicamente la varianza entre las variables originales [2:08].

Imagina un conjunto de puntos graficados en un plano bidimensional. Cada punto necesita una coordenada en el eje X y otra en el eje Y. Ahora, ¿qué sucede si mediante una operación matemática proyectas todos esos puntos sobre una sola línea recta que capture la distribución de los datos? Pasarías de dos dimensiones a una sola, y la información importante, la varianza, quedaría preservada [2:30].

¿Qué pasos matemáticos sigue PCA para encontrar esa información?

El proceso se desarrolla en etapas bien definidas [3:08]:

  • Calcular la matriz de covarianza: esta matriz compara cada feature con los demás para determinar qué tanto se relacionan entre sí. La covarianza mide cómo cambian dos variables juntas, lo que permite identificar redundancias.
  • Obtener los valores y vectores propios: a partir de la matriz de covarianza se calculan los eigenvalues (valores propios) y eigenvectors (vectores propios). Estos indican la magnitud y dirección de la varianza en los datos, revelando cuáles relaciones son más fuertes y contienen más información.
  • Ordenar de forma descendente: los componentes se organizan de mayor a menor según su valor propio. Los que tienen mayor peso representan la mayor cantidad de información para el modelo. De esta forma se generan features artificiales que no existían en el dataset original, pero que concentran lo esencial [3:40].

¿Qué variantes de PCA ofrece Scikit Learn?

Una ventaja significativa de trabajar con Scikit Learn es que ya incluye implementaciones listas para distintos escenarios [4:20]:

  • Incremental PCA: ideal cuando trabajas en equipos con recursos computacionales limitados, poca memoria RAM o procesadores modestos. Permite procesar los datos por lotes en lugar de cargar todo el dataset en memoria.
  • Kernel PCA: diseñado para datos con estructuras no lineales. Utiliza funciones de kernel para capturar relaciones complejas que el PCA estándar no puede manejar.

Estas variantes amplían el alcance del algoritmo y lo hacen adaptable a prácticamente cualquier tipo de problema, desde datasets pequeños y lineales hasta conjuntos masivos con patrones complejos.

Si ya identificaste alguna de estas señales en tus proyectos, el siguiente paso natural es llevar PCA a la práctica con código. Comparte en los comentarios cuál ha sido tu experiencia al trabajar con datasets de alta dimensionalidad.