← Volver a Aprende con CDIA

Aprendizaje no supervisadoPCA (Análisis de Componentes Principales)

AvanzadoMachine Learning7 min de lectura

PCA (Análisis de Componentes Principales)

Reducir muchas variables a unas pocas direcciones de máxima varianza, para visualizar, comprimir y quitar ruido sin perder lo esencial.

PCA (Análisis de Componentes Principales, Principal Component Analysis) resume muchas variables en unas pocas nuevas, perdiendo la menor cantidad de información posible. Es la forma clásica de reducir dimensiones para visualizar o simplificar datos.

El problema: demasiadas dimensiones

Un conjunto de datos con cientos de variables es difícil de graficar, más lento de procesar y propenso al sobreajuste (la llamada maldición de la dimensionalidad). Muchas de esas variables, además, están correlacionadas y dicen casi lo mismo. ¿Y si pudiéramos condensarlas sin perder lo esencial?

La idea: nuevas direcciones de máxima varianza

PCA no elige un subconjunto de variables: crea variables nuevas (los componentes principales) que son combinaciones de las originales. Las construye buscando las direcciones donde los datos más varían.

  • El primer componente es la dirección de mayor varianza: la que mejor "estira" la nube de puntos.
  • El segundo es la siguiente dirección de mayor varianza, perpendicular a la anterior.
  • Y así sucesivamente.

La intuición: la varianza es información. Una dirección donde los datos apenas cambian aporta poco y puede descartarse.

PC1 PC2
PC1 apunta donde los datos más varían; PC2 es perpendicular y recoge lo que queda. Quedarse con PC1 conserva casi toda la información.

Varianza explicada

Cada componente viene con una proporción de varianza explicada: cuánta de la información total captura. Normalmente los primeros pocos componentes acumulan la gran mayoría, y ahí está la magia: podemos quedarnos, por ejemplo, con 2 componentes que conservan el 95 % de la información y tirar el resto.

En código

scikit-learn reduce a las dimensiones que pidas y te dice cuánto conservaste:

from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

X_esc = StandardScaler().fit_transform(X)   # PCA exige escalar primero

pca = PCA(n_components=2)
X_2d = pca.fit_transform(X_esc)             # datos reducidos a 2 columnas

print(X_2d.shape)                           # (n_muestras, 2)
print(pca.explained_variance_ratio_)        # varianza que captura cada componente
print(pca.explained_variance_ratio_.sum())  # información total conservada

Reducir a n_components=2 es lo que permite dibujar en un plano un conjunto de datos que tenía decenas de variables.

Para qué sirve

  • Visualización: proyectar datos de muchas dimensiones a 2 o 3 para verlos en un gráfico.
  • Compresión: guardar menos números conservando lo esencial.
  • Quitar ruido: descartar los componentes menores suele eliminar variaciones irrelevantes.
  • Acelerar modelos: entrenar con menos variables, sin sacrificar mucho.

Para llevar

PCA resume muchas variables en pocos componentes principales, las direcciones de máxima varianza. Con unos pocos suele bastar para conservar casi toda la información, lo que permite visualizar, comprimir y limpiar datos. Junto con k-means, forma el dúo esencial del aprendizaje no supervisado: una agrupa filas, la otra resume columnas.