logo

Análisis de componentes principales (PCA)

A medida que aumenta la cantidad de características o dimensiones en un conjunto de datos, la cantidad de datos necesarios para obtener un resultado estadísticamente significativo aumenta exponencialmente. Esto puede provocar problemas como sobreajuste, mayor tiempo de cálculo y menor precisión de los modelos de aprendizaje automático. Esto se conoce como la maldición de los problemas de dimensionalidad que surgen al trabajar con datos de alta dimensión.

A medida que aumenta el número de dimensiones, el número de combinaciones posibles de características aumenta exponencialmente, lo que hace que sea computacionalmente difícil obtener una muestra representativa de los datos y se vuelve costoso realizar tareas como la agrupación o clasificación porque se vuelve. Además, algunos aprendizaje automático Los algoritmos pueden ser sensibles al número de dimensiones, lo que requiere más datos para lograr el mismo nivel de precisión que los datos de dimensiones inferiores.



Para abordar el maldición de dimensionalidad , Ingeniería de características Se utilizan técnicas que incluyen selección y extracción de características. Reducción de dimensionalidad Es un tipo de técnica de extracción de características que tiene como objetivo reducir la cantidad de características de entrada conservando la mayor cantidad posible de información original.

En este artículo, analizaremos una de las técnicas de reducción de dimensionalidad más populares, es decir, el análisis de componentes principales (PCA).

¿Qué es el Análisis de Componentes Principales (PCA)?

Análisis de componentes principales (PCA) la técnica fue introducida por el matemático Carlos Pearson en 1901 . Funciona con la condición de que, si bien los datos en un espacio de dimensiones superiores se asignan a datos en un espacio de dimensiones inferiores, la variación de los datos en el espacio de dimensiones inferiores debe ser máxima.



  • Análisis de Componentes Principales (PCA) es un procedimiento estadístico que utiliza una transformación ortogonal que convierte un conjunto de variables correlacionadas en un conjunto de variables no correlacionadas. PCA es la herramienta más utilizada en análisis de datos exploratorios y en aprendizaje automático para modelos predictivos. Además,
  • El Análisis de Componentes Principales (PCA) es un aprendizaje sin supervisión Técnica algorítmica utilizada para examinar las interrelaciones entre un conjunto de variables. También se conoce como análisis factorial general donde la regresión determina una línea de mejor ajuste.
  • El objetivo principal del Análisis de Componentes Principales (PCA) es reducir la dimensionalidad de un conjunto de datos preservando al mismo tiempo los patrones o relaciones más importantes entre las variables sin ningún conocimiento previo de las variables objetivo.

El Análisis de Componentes Principales (PCA) se utiliza para reducir la dimensionalidad de un conjunto de datos al encontrar un nuevo conjunto de variables, más pequeño que el conjunto original de variables, que retiene la mayor parte de la información de la muestra y es útil para la regresión y clasificación de datos.

Análisis de componentes principales

  1. El Análisis de Componentes Principales (PCA) es una técnica de reducción de dimensionalidad que identifica un conjunto de ejes ortogonales, llamados componentes principales, que capturan la varianza máxima en los datos. Los componentes principales son combinaciones lineales de las variables originales del conjunto de datos y están ordenados en orden decreciente de importancia. La varianza total capturada por todos los componentes principales es igual a la varianza total en el conjunto de datos original.
  2. El primer componente principal captura la mayor variación en los datos, pero el segundo componente principal captura la máxima diferencia eso es ortogonal al primer componente principal, y así sucesivamente.
  3. El análisis de componentes principales se puede utilizar para diversos fines, incluida la visualización de datos, la selección de funciones y la compresión de datos. En visualización de datos, PCA se puede utilizar para trazar datos de alta dimensión en dos o tres dimensiones, lo que facilita su interpretación. En la selección de características, PCA se puede utilizar para identificar las variables más importantes en un conjunto de datos. En la compresión de datos, PCA se puede utilizar para reducir el tamaño de un conjunto de datos sin perder información importante.
  4. En el Análisis de Componentes Principales, se supone que la información se transmite en la varianza de las características, es decir, cuanto mayor es la variación en una característica, más información contiene esa característica.

En general, PCA es una poderosa herramienta para el análisis de datos y puede ayudar a simplificar conjuntos de datos complejos, haciéndolos más fáciles de entender y trabajar con ellos.



Explicación paso a paso del PCA (análisis de componentes principales)

Paso 1: estandarización

Primero, necesitamos estandarizar nuestro conjunto de datos para garantizar que cada variable tenga una media de 0 y una desviación estándar de 1.

Z = frac{X-mu}{sigma}

Aquí,

comentario javascript
  • mues la media de las características independientes mu = left { mu_1, mu_2, cdots, mu_m 
ight }
  • sigmaes el Desviación Estándar de características independientes sigma = left { sigma_1, sigma_2, cdots, sigma_m 
ight }

Paso 2: Cálculo de la matriz de covarianza

Covarianza Mide la fuerza de la variabilidad conjunta entre dos o más variables, indicando cuánto cambian entre sí. Para encontrar la covarianza podemos usar la fórmula:

cov(x1,x2) = frac{sum_{i=1}^{n}(x1_i-ar{x1})(x2_i-ar{x2})}{n-1}

El valor de la covarianza puede ser positivo, negativo o ceros.

  • Positivo: A medida que x1 aumenta, x2 también aumenta.
  • Negativo: A medida que x1 aumenta, x2 también disminuye.
  • Ceros: Sin relación directa

Paso 3: Calcular los valores propios y los vectores propios de la matriz de covarianza para identificar los componentes principales

Sea A una matriz cuadrada nXn y X un vector distinto de cero para el cual

AX = lambda X

para algunos valores escalares lambda. entonces lambdaes conocido como el valor propio de las matrices A y X se conoce como vector propio de la matriz A para el valor propio correspondiente.

También se puede escribir como:

egin{aligned} AX-lambda X &= 0  (A-lambda I)X &= 0 end{aligned}

donde soy la matriz identidad de la misma forma que la matriz A. Y las condiciones anteriores serán verdaderas sólo si (A - lambdaI)no será invertible (es decir, matriz singular). Eso significa,

|A - lambdaI| = 0

A partir de la ecuación anterior, podemos encontrar los valores propios lambda y, por lo tanto, el vector propio correspondiente se puede encontrar usando la ecuación AX = lambda X.

¿Cómo funciona el Análisis de Componentes Principales (PCA)?

Por lo tanto, PCA emplea una transformación lineal que se basa en preservar la mayor varianza en los datos utilizando el menor número de dimensiones. Implica los siguientes pasos:

Python3

import> pandas as pd> import> numpy as np> # Here we are using inbuilt dataset of scikit learn> from> sklearn.datasets>import> load_breast_cancer> # instantiating> cancer>=> load_breast_cancer(as_frame>=>True>)> # creating dataframe> df>=> cancer.frame> # checking shape> print>(>'Original Dataframe shape :'>,df.shape)> # Input features> X>=> df[cancer[>'feature_names'>]]> print>(>'Inputs Dataframe shape :'>, X.shape)>
>
>

Producción :

Original Dataframe shape : (569, 31) Inputs Dataframe shape : (569, 30)>

Ahora aplicaremos el primer paso, que es estandarizar los datos y, para ello, primero tendremos que calcular la media y la desviación estándar de cada característica en el espacio de características.

Python3

# Mean> X_mean>=> X.mean()> # Standard deviation> X_std>=> X.std()> # Standardization> Z>=> (X>-> X_mean)>/> X_std>
>
>

El covarianza La matriz nos ayuda a visualizar qué tan fuerte es la dependencia de dos características entre sí en el espacio de características.

Python3

# covariance> c>=> Z.cov()> # Plot the covariance matrix> import> matplotlib.pyplot as plt> import> seaborn as sns> sns.heatmap(c)> plt.show()>
>
>

Producción :

Ahora calcularemos el vectores propios y valores propios para nuestro espacio de características que tienen un gran propósito al identificar los componentes principales de nuestro espacio de características.

Python3

eigenvalues, eigenvectors>=> np.linalg.eig(c)> print>(>'Eigen values: '>, eigenvalues)> print>(>'Eigen values Shape:'>, eigenvalues.shape)> print>(>'Eigen Vector Shape:'>, eigenvectors.shape)>
>
>

Producción :

Eigen values:  [1.32816077e+01 5.69135461e+00 2.81794898e+00 1.98064047e+00  1.64873055e+00 1.20735661e+00 6.75220114e-01 4.76617140e-01  4.16894812e-01 3.50693457e-01 2.93915696e-01 2.61161370e-01  2.41357496e-01 1.57009724e-01 9.41349650e-02 7.98628010e-02  5.93990378e-02 5.26187835e-02 4.94775918e-02 1.33044823e-04  7.48803097e-04 1.58933787e-03 6.90046388e-03 8.17763986e-03  1.54812714e-02 1.80550070e-02 2.43408378e-02 2.74394025e-02  3.11594025e-02 2.99728939e-02] Eigen values Shape: (30,) Eigen Vector Shape: (30, 30)>

Ordene los valores propios en orden descendente y ordene los vectores propios correspondientes en consecuencia.

Python3

# Index the eigenvalues in descending order> idx>=> eigenvalues.argsort()[::>->1>]> # Sort the eigenvalues in descending order> eigenvalues>=> eigenvalues[idx]> # sort the corresponding eigenvectors accordingly> eigenvectors>=> eigenvectors[:,idx]>
>
>

La varianza explicada es el término que nos da una idea de la cantidad de varianza total que se ha retenido al seleccionar los componentes principales en lugar del espacio de características original.

Python3

explained_var>=> np.cumsum(eigenvalues)>/> np.>sum>(eigenvalues)> explained_var>
>
>

Producción :

array([0.44272026, 0.63243208, 0.72636371, 0.79238506, 0.84734274,  0.88758796, 0.9100953 , 0.92598254, 0.93987903, 0.95156881,  0.961366 , 0.97007138, 0.97811663, 0.98335029, 0.98648812,  0.98915022, 0.99113018, 0.99288414, 0.9945334 , 0.99557204,  0.99657114, 0.99748579, 0.99829715, 0.99889898, 0.99941502,  0.99968761, 0.99991763, 0.99997061, 0.99999557, 1. ])>

Determinar el número de componentes principales

Aquí podemos considerar el número de componentes principales de cualquier valor de nuestra elección o limitar la varianza explicada. Aquí estoy considerando una varianza explicada superior al 50%. Comprobemos cuántos componentes principales entran en esto.

Python3

n_components>=> np.argmax(explained_var>>=> 0.50>)>+> 1> n_components>
>
>

Producción :

2>

Proyectar los datos en los componentes principales seleccionados

  • Encuentre la matriz de proyección. Es una matriz de vectores propios correspondientes a los valores propios más grandes de la matriz de covarianza de los datos. proyecta el conjunto de datos de alta dimensión en un subespacio de menor dimensión
  • Los vectores propios de la matriz de covarianza de los datos se denominan ejes principales de los datos, y la proyección de las instancias de datos sobre estos ejes principales se denomina componentes principales.

Python3

# PCA component or unit matrix> u>=> eigenvectors[:,:n_components]> pca_component>=> pd.DataFrame(u,> >index>=> cancer[>'feature_names'>],> >columns>=> [>'PC1'>,>'PC2'>]> >)> # plotting heatmap> plt.figure(figsize>=>(>5>,>7>))> sns.heatmap(pca_component)> plt.title(>'PCA Component'>)> plt.show()>
>
>

Producción :

mejorado para bucle java

  • Luego, proyectamos nuestro conjunto de datos usando la fórmula:

egin{aligned} Proj_{P_i}(u) &= frac{P_icdot u}u  &=P_icdot u end{aligned}

  • La reducción de dimensionalidad se obtiene entonces reteniendo únicamente aquellos ejes (dimensiones) que representan la mayor parte de la varianza y descartando todos los demás.

Encontrar proyección en PCA

Python3

# Matrix multiplication or dot Product> Z_pca>=> Z @ pca_component> # Rename the columns name> Z_pca.rename({>'PC1'>:>'PCA1'>,>'PC2'>:>'PCA2'>}, axis>=>1>, inplace>=>True>)> # Print the Pricipal Component values> print>(Z_pca)>
>
>

Producción :

 PCA1 PCA2 0 9.184755 1.946870 1 2.385703 -3.764859 2 5.728855 -1.074229 3 7.116691 10.266556 4 3.931842 -1.946359 .. ... ... 564 6.433655 -3.573673 565 3.790048 -3.580897 566 1.255075 -1.900624 567 10.365673 1.670540 568 -5.470430 -0.670047 [569 rows x 2 columns]>

Los vectores propios de la matriz de covarianza de los datos se denominan ejes principales de los datos, y la proyección de las instancias de datos sobre estos ejes principales se denomina componentes principales. La reducción de dimensionalidad se obtiene entonces reteniendo únicamente aquellos ejes (dimensiones) que representan la mayor parte de la varianza y descartando todos los demás.

PCA usando Sklearn

Existen diferentes librerías en las que se ha automatizado todo el proceso de análisis de componentes principales implementándolo en un paquete como función y solo tenemos que pasarle el número de componentes principales que nos gustaría tener. Sklearn es una de esas bibliotecas que se puede utilizar para PCA como se muestra a continuación.

Python3

# Importing PCA> from> sklearn.decomposition>import> PCA> # Let's say, components = 2> pca>=> PCA(n_components>=>2>)> pca.fit(Z)> x_pca>=> pca.transform(Z)> # Create the dataframe> df_pca1>=> pd.DataFrame(x_pca,> >columns>=>[>'PC{}'>.> >format>(i>+>1>)> >for> i>in> range>(n_components)])> print>(df_pca1)>
>
>

Producción:

 PC1 PC2 0 9.184755 1.946870 1 2.385703 -3.764859 2 5.728855 -1.074229 3 7.116691 10.266556 4 3.931842 -1.946359 .. ... ... 564 6.433655 -3.573673 565 3.790048 -3.580897 566 1.255075 -1.900624 567 10.365673 1.670540 568 -5.470430 -0.670047 [569 rows x 2 columns]>

Podemos hacer coincidir el resultado Z_pca anterior porque tiene exactamente los mismos valores.

Python3

# giving a larger plot> plt.figure(figsize>=>(>8>,>6>))> plt.scatter(x_pca[:,>0>], x_pca[:,>1>],> >c>=>cancer[>'target'>],> >cmap>=>'plasma'>)> # labeling x and y axes> plt.xlabel(>'First Principal Component'>)> plt.ylabel(>'Second Principal Component'>)> plt.show()>
>
>

Producción:

Python3

# components> pca.components_>
>
>

Producción :

array([[ 0.21890244, 0.10372458, 0.22753729, 0.22099499, 0.14258969,  0.23928535, 0.25840048, 0.26085376, 0.13816696, 0.06436335,  0.20597878, 0.01742803, 0.21132592, 0.20286964, 0.01453145,  0.17039345, 0.15358979, 0.1834174 , 0.04249842, 0.10256832,  0.22799663, 0.10446933, 0.23663968, 0.22487053, 0.12795256,  0.21009588, 0.22876753, 0.25088597, 0.12290456, 0.13178394],  [-0.23385713, -0.05970609, -0.21518136, -0.23107671, 0.18611302,  0.15189161, 0.06016536, -0.0347675 , 0.19034877, 0.36657547,  -0.10555215, 0.08997968, -0.08945723, -0.15229263, 0.20443045,  0.2327159 , 0.19720728, 0.13032156, 0.183848 , 0.28009203,  -0.21986638, -0.0454673 , -0.19987843, -0.21935186, 0.17230435,  0.14359317, 0.09796411, -0.00825724, 0.14188335, 0.27533947]])>

Ventajas del análisis de componentes principales

  1. Reducción de dimensionalidad : El análisis de componentes principales es una técnica popular utilizada para reducción de dimensionalidad , que es el proceso de reducir el número de variables en un conjunto de datos. Al reducir la cantidad de variables, PCA simplifica el análisis de datos, mejora el rendimiento y facilita la visualización de datos.
  2. Selección de características : El análisis de componentes principales se puede utilizar para selección de características , que es el proceso de seleccionar las variables más importantes en un conjunto de datos. Esto es útil en el aprendizaje automático, donde la cantidad de variables puede ser muy grande y es difícil identificar las variables más importantes.
  3. Visualización de datos : El análisis de componentes principales se puede utilizar para Multicolinealidad : El Análisis de Componentes Principales se puede utilizar para tratar multicolinealidad , que es un problema común en un análisis de regresión donde dos o más variables independientes están altamente correlacionadas. PCA puede ayudar a identificar la estructura subyacente de los datos y crear nuevas variables no correlacionadas que se pueden utilizar en el modelo de regresión.
  4. Reducción de ruido : El análisis de componentes principales se puede utilizar para reducir el ruido en los datos. Al eliminar los componentes principales con baja varianza, que se supone representan ruido, el Análisis de Componentes Principales puede mejorar la relación señal-ruido y facilitar la identificación de la estructura subyacente en los datos.
  5. Compresión de datos : El análisis de componentes principales se puede utilizar para la compresión de datos. Al representar los datos utilizando una cantidad menor de componentes principales, que capturan la mayor parte de la variación en los datos, PCA puede reducir los requisitos de almacenamiento y acelerar el procesamiento.
  6. Detección de valores atípicos : El análisis de componentes principales se puede utilizar para la detección de valores atípicos. Valores atípicos son puntos de datos que son significativamente diferentes de los demás puntos de datos del conjunto de datos. El Análisis de Componentes Principales puede identificar estos valores atípicos buscando puntos de datos que estén lejos de otros puntos en el espacio del componente principal.

Desventajas del análisis de componentes principales

  1. Interpretación de los componentes principales : Los componentes principales creados por el Análisis de Componentes Principales son combinaciones lineales de las variables originales y, a menudo, es difícil interpretarlos en términos de las variables originales. Esto puede dificultar la explicación de los resultados de la PCA a otras personas.
  2. Escalado de datos : El Análisis de Componentes Principales es sensible a la escala de los datos. Si los datos no se escalan correctamente, es posible que PCA no funcione bien. Por lo tanto, es importante escalar los datos antes de aplicar el Análisis de Componentes Principales.
  3. Pérdida de información : El análisis de componentes principales puede provocar pérdida de información. Si bien el Análisis de Componentes Principales reduce la cantidad de variables, también puede provocar pérdida de información. El grado de pérdida de información depende del número de componentes principales seleccionados. Por lo tanto, es importante seleccionar cuidadosamente la cantidad de componentes principales que se conservarán.
  4. Relaciones no lineales : El Análisis de Componentes Principales supone que las relaciones entre variables son lineales. Sin embargo, si existen relaciones no lineales entre las variables, es posible que el Análisis de Componentes Principales no funcione bien.
  5. Complejidad computacional : Computación El análisis de componentes principales puede resultar costoso desde el punto de vista computacional para grandes conjuntos de datos. Esto es especialmente cierto si la cantidad de variables en el conjunto de datos es grande.
  6. Sobreajuste : El análisis de componentes principales a veces puede resultar en sobreajuste , que es cuando el modelo se ajusta demasiado bien a los datos de entrenamiento y funciona mal con datos nuevos. Esto puede suceder si se utilizan demasiados componentes principales o si el modelo se entrena en un conjunto de datos pequeño.

Preguntas frecuentes (FAQ)

1. ¿Qué es el Análisis de Componentes Principales (PCA)?

PCA es una técnica de reducción de dimensionalidad utilizada en estadística y aprendizaje automático para transformar datos de alta dimensión en una representación de menor dimensión, preservando la información más importante.

2. ¿Cómo funciona una PCA?

Los componentes principales son combinaciones lineales de las características originales que PCA encuentra y utiliza para capturar la mayor variación en los datos. Estos componentes ortogonales están ordenados según la cantidad de varianza que explican.

3. ¿Cuándo se debe aplicar la PCA?

El uso de PCA es ventajoso cuando se trabaja con conjuntos de datos multicolineales o de alta dimensión. La extracción de funciones, la reducción de ruido y el preprocesamiento de datos son usos destacados.

4. ¿Cómo se interpretan los componentes principales?

Los nuevos ejes están representados en el espacio de características por cada componente principal. Un indicador de la importancia de un componente en la captura de la variabilidad de los datos es su capacidad para explicar una variación mayor.

5. ¿Cuál es el significado de los componentes principales?

Los componentes principales representan las direcciones en las que los datos varían más. Los primeros componentes suelen capturar la mayor parte de la varianza de los datos, lo que permite una representación más concisa.