¿Qué es el Análisis de Componentes Principales (PCA) y cómo se utiliza en Python?
El Análisis de Componentes Principales (PCA, por sus siglas en inglés) es una técnica de reducción de dimensionalidad que permite simplificar conjuntos de datos complejos. Al identificar las direcciones en las que se captura la mayor cantidad de varianza de los datos, el PCA facilita reducir el número de variables necesarias para representar los datos sin perder información esencial. Esta capacidad de simplificar el conjunto de datos resulta invaluable al preparar datos para ser procesados por modelos de machine learning, especialmente cuando se trabaja con grandes volúmenes de información.
¿Cómo implementamos PCA en un proyecto con Python?
Para ilustrar la aplicación del PCA en Python, trabajaremos con el dataset Iris en un entorno llamado DeepNote, utilizando librerías populares como NumPy y Scikit Learn. A continuación, detallamos el proceso:
- Importación y escalamiento de datos:
- Usamos
StandardScaler
de Scikit Learn para escalar las cuatro columnas numéricas del dataset Iris, asegurando que los datos tengan un promedio cero y una desviación estándar de uno.
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
- Cálculo de la matriz de covarianza:
- La matriz de covarianza se construye a partir de los datos escalados, permitiendo el cálculo de vectores y valores propios.
import numpy as np
covariance_matrix = np.cov(X_scaled.T)
- Descomposición utilizando NumPy:
- Usamos
np.linalg.eig
para obtener los vectores y valores propios de la matriz de covarianza, identificando direcciones principales de varianza.
eigen_values, eigen_vectors = np.linalg.eig(covariance_matrix)
- Cálculo de la varianza explicada:
- Calculamos la proporción de varianza que cada componente principal captura dividiendo el valor propio de cada componente por la suma de todos los valores propios.
variance_explained = [(i / sum(eigen_values)) * 100 for i in eigen_values]
¿Cómo transforma PCA los datos reales?
Después de calcular los vectores y valores propios, se transforma el conjunto de datos original a este nuevo espacio de componentes principales utilizando Scikit Learn:
- Inicialización y ajuste del modelo PCA:
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
- Análisis de la varianza capturada:
- Podrás verificar la proporción de la varianza total que las nuevas componentes principales capturan. Esto asegura que el modelo captura la información relevante de los datos originales.
print(pca.explained_variance_ratio_)
- Visualización de datos reducidos:
- Finalmente, podemos visualizar la distribución de los datos utilizando un diagrama de dispersión a dos dimensiones.
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
iris_df = pd.DataFrame(data=X, columns=iris.feature_names)
iris_df['species'] = iris.target
iris_df['PCA1'] = X_pca[:, 0]
iris_df['PCA2'] = X_pca[:, 1]
sns.scatterplot(x='PCA1', y='PCA2', hue='species', data=iris_df)
plt.show()
Importancia y recomendaciones para aplicar PCA
La aplicación del PCA es fundamental en el preprocesamiento de datos en ciencia de datos. Al reducir la dimensionalidad, no solo optimizamos el rendimiento de los modelos de machine learning, sino que también evitamos problemas de sobreajuste, especialmente cuando trabajamos con conjuntos de datos ruidosos o altamente correlacionados.
-
Cuándo usar PCA:
- Cuando el conjunto de datos tiene muchas variables.
- Si las variables están correlacionadas.
- Para mejorar el rendimiento computacional.
-
Cuidado con PCA:
- Aunque el PCA es poderoso, implica una pérdida de información. Se debe evaluar cuidadosamente cuánta varianza se está dispuesto a sacrificar.
Al final, el objetivo del PCA es facilitar el camino hacia modelos más eficientes y precisos, al tiempo que conservamos la esencia y la calidad de la información original. Al dominar técnicas como el PCA, los estudiantes y profesionales están mejor equipados para enfrentar desafíos complejos en la ciencia de datos. Mantén la curiosidad y sigue explorando, cada paso que das te acerca más a convertirte en un experto en el campo.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?