Por qué más dimensiones empeoran tus modelos ML
Clase 5 de 12 • 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)
Reducir dimensiones sin perder información es clave en modelos de alto rendimiento. Aquí verás por qué la maldición de la dimensionalidad degrada resultados y cómo PCA, basado en eigenvectores de la matriz de covarianza, permite proyectar datos a menos dimensiones conservando la mayor varianza posible. Además, se muestra cómo implementarlo con Scikit-learn y analizar sus salidas para decisiones informadas.
¿Por qué más dimensiones empeoran el rendimiento en machine learning?
Añadir características no siempre ayuda. A partir de cierto punto, el desempeño cae por la maldición de la dimensionalidad.
- Datos escasos: al aumentar dimensiones, los puntos se alejan exponencialmente y dejan de ser vecinos cercanos.
- Las distancias pierden sentido: en espacios de miles de dimensiones, casi todas las distancias se parecen.
- Impacto en modelos: empeora el vecino más cercano y métodos basados en distancia.
- Efectos prácticos: modelos con overfitting, entrenamiento lento y pobre generalización.
¿Cómo funciona PCA y cuál es la conexión con el cambio de base?
PCA usa la estructura estadística de los datos para encontrar direcciones que capturan máxima varianza y reexpresar el conjunto en una base más informativa.
- Matriz de covarianza: resume relaciones entre variables.
- Eigenvectores y eigenvalores: los eigenvectores son direcciones de máxima varianza; los eigenvalores indican cuánta varianza captura cada dirección.
- Cambio de base: PCA “rota” el sistema original (x, y, z) a los nuevos ejes llamados componentes principales.
- Proyección: se calculan nuevas coordenadas de los puntos en la base de componentes principales.
- Orden y recorte: se ordena por eigenvalor y se conservan los primeros componentes para reducir dimensiones manteniendo la mayor información.
¿Cómo aplicarlo en código con Scikit-learn y visualizar la varianza?
Se crean datos 3D, se aplica PCA a 2D y se evalúa la varianza explicada para cuantificar la información conservada.
import numpy as np from sklearn.decomposition import PCA # Datos sintéticos 3D np.random.seed(42) n = 300 x = np.random.randn(n) y = np.random.randn(n) z = 0.6*x + 0.2*y + np.random.randn(n) # combinación lineal + ruido X_3D = np.column_stack([x, y, z]) # PCA a 2 componentes pca = PCA(n_components=2) X_2D = pca.fit_transform(X_3D) # Varianza explicada por componente y total var_ratio = pca.explained_variance_ratio_ var_total = var_ratio.sum() print('Dimensiones originales:', X_3D.shape[1]) print('Nuevas dimensiones:', X_2D.shape[1]) print('Varianza explicada por componente:', np.round(var_ratio, 2)) print(f'Varianza total conservada con 2 componentes: {var_total:.2%}')
- Varianza explicada: “varianza explicada por componente” corresponde al porcentaje capturado por cada principal component.
- Resultado típico mostrado: se conservó más del 80 % de la información con solo dos componentes (ejemplo: 82.98 %).
- Lectura técnica:
explained_variance_devuelve eigenvalores;components_devuelve eigenvectores (componentes principales).
¿Qué nos dicen los eigenvalores y eigenvectores?
- Un eigenvalor grande: componente que captura más varianza del conjunto.
- Primer componente: dominado por X y Z, Y aporta poco por la construcción de z como combinación de x e y más ruido.
- Segundo componente: dominado por Y, capturando la variación remanente principal.
- Interpretación: los componentes se alinean con las direcciones donde realmente “vive” la información.
¿Para qué sirve en práctica: visualización, eficiencia y ruido?
- Visualización: proyectar a 2D o 3D permite ver estructura y posibles clusters.
- Eficiencia: menos características aceleran el entrenamiento y simplifican modelos.
- Eliminación de ruido: descartar componentes de baja varianza reduce información irrelevante y mejora la generalización.
¿Qué ejercicio ayuda a afianzar el entendimiento?
- Cambia
n_componentsde 2 a 1. - Ejecuta de nuevo e interpreta el porcentaje de varianza total conservada.
- Comenta tu resultado: ¿perder dos dimensiones y aún conservar alto porcentaje te parece adecuado para tu caso?.
Comparte tus hallazgos y el porcentaje de varianza que obtuviste al usar un solo componente: ¿en qué escenarios lo usarías y por qué?.