¿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.
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))*100for 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.
¿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.
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.
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.
¡Excelente explicación y que belleza de curso 💚! En mis clases de econometría basica y media no llegué a ver la reducción de dimensionalidad, pero veo que es muy importante para entrenar los modelos. Me voy muy contento a tomar el siguiente paso: https://platzi.com/cursos/algebra-lineal/ 😎.
Si bien ya había trabajado con pipelines en Data Science & Machine Learning crudos, desde 0 hasta entrenar un modelo de ML, ese curso me esclareció aún más las cosas.
Me encantó la forma en que le dio hincapié el Profe Pacho a que la estadística y otras ramas de las mates que están implícitas en el mundo de la Ciencia de datos.
En la imagen de la izquierda, cada punto es un registro de la tabla de entrada que se representa en dos dimensiones con los valores de los dos campos de análisis en los ejes x e y. La longitud de los ejes azules representa la varianza de cada una de las dos variables. Las longitudes de las dos flechas azules son aproximadamente iguales, lo que indica que las dos variables tienen una varianza aproximadamente igual.
En la imagen central, los ejes se han rotado para representar mejor la relación lineal entre las variables. Uno de los ejes verdes es ligeramente más largo que el otro, lo que indica más varianza en esa dirección.
Sin embargo, esta rotación no es óptima. La imagen de la derecha muestra la rotación óptima encontrada por PCA que se alinea con la relación lineal entre las variables. Esta rotación produce un eje rojo con la mayor cantidad de varianza. El eje rojo más grande corresponde al primer componente principal y es la mejor representación en una sola dimensión de los datos bidimensionales. En las tres imágenes, la varianza total de las variables originales es la misma, pero la imagen de la derecha ha asignado la mayor cantidad posible de varianza al primer componente, lo que deja la menor cantidad posible de varianza restante para el segundo com