Ir al contenido principal

Análisis de Componentes Principales (PCA)

 


El Análisis de Componentes Principales, comúnmente conocido por sus siglas en inglés PCA (Principal Component Analysis), constituye una técnica estadística fundamentada en álgebra lineal. Esta metodología es esencial para identificar las variables que retienen la mayor cantidad de información dentro de un conjunto de datos, entendiendo aquí que la 'información' se refiere principalmente a la varianza observada en los mismos.


Para ilustrar este concepto, consideremos el siguiente ejemplo práctico:

Supongamos que nos encontramos en una fiesta familiar y nos toca ser el fotógrafo. Imaginemos que nuestros familiares están dispersos en el espacio de la fiesta. Si tomamos una fotografía desde un ángulo inadecuado, es probable que no todos los familiares aparezcan en la imagen. Esto se puede ver en el siguiente gráfico:










El análisis de componentes principales (PCA) se centra en la identificación de una rotación de los datos alrededor de un eje que maximice la conservación de la varianza. Esto implica orientar el conjunto de datos de manera que se observe la mayor cantidad de "puntos" o variabilidad entre ellos. La varianza es clave en PCA porque nos permite discernir la información más significativa contenida en los datos.

Para comprender a fondo el PCA, es esencial familiarizarse con algunos conceptos estadísticos fundamentales que subyacen en este método analítico.


Conceptos Clave en el Análisis de Componentes Principales (PCA):


Promedio (Media):

El promedio representa el valor central de un conjunto de datos. Visualmente, si imaginamos este conjunto como pesos en una balanza, el promedio sería el punto de equilibrio. En Python, el promedio se calcula con la función .mean(). Un promedio más alto o más bajo nos proporciona una indicación del nivel general de la característica que estamos evaluando.



Número que no es el promedio:



Número que si es el promedio:






 Varianza:

La varianza mide qué tan dispersos están los datos alrededor del promedio. Una alta varianza indica que los datos están distribuidos sobre un rango amplio, mientras que una baja varianza muestra una concentración de datos cerca del promedio. En Python, utilizamos .var() para calcular la varianza.

Ejemplo de la información que nos brinda la Varianza:

Supongamos que tenemos 2 conjuntos de información con las notas de 4 estudiantes de aulas diferentes

A. 4, 4, 4, 4

B. 1, 1, 7, 7

Ambas aulas tienen un promedio de 4, pero sus distribuciones son notablemente distintas. El aula A tiene una varianza de 0, indicando homogeneidad total en las notas. Por otro lado, el aula B, con una varianza de 9, muestra una alta heterogeneidad. Esto ejemplifica cómo la varianza puede revelar diferencias en la dispersión de los datos que el promedio solo no puede.


Normalización:

Este proceso ajusta los valores numéricos a una escala común sin distorsionar diferencias en los rangos de valores o perder información, similar a estandarizar ingredientes en una receta para que cada componente combine de manera equilibrada.

Standardization (Estandarización): También conocida como Z-score normalization. Este método reescala los datos para que tengan una media (promedio) de 0 y una desviación estándar de 1. La fórmula es:





Donde µ es la media del conjunto de datos, y o la desviación estándar.

Covarianza:

La covarianza mide la relación lineal entre dos variables. Un valor positivo indica que ambas variables tienden a incrementar juntas, mientras que un valor negativo sugiere que se mueven en direcciones opuestas. La función .cov() en Python permite calcular la covarianza entre dos conjuntos de datos.

Para esta interpretación supongamos que tenemos 2 variables ya normalizadas. Si observamos las variables de la siguiente manera:






Acá podemos ver que la varianza para los dos conjuntos de datos es la misma tanto del plano X, como del plano Y. para determinar la covarianza lo que hacemos es usar las coordenadas del plano cartesiano, es decir hacemos la suma del producto de coordenadas.

a)                                                     b)
      (-1,-1) = 1                                    (-1,1) = -1

      (0,0) = 0                                      (0,0) = 0

      (1,1) = 1                                      (1,-1) = -1





Como podemos ver tenemos los mismos valores, pero los signos son diferentes:

Figura A covarianza de 2, Figura B covarianza de -2. De esta forma podemos diferenciar la dirección de nuestros datos quedando la covarianza de la siguiente manera:







Una vez que tengamos la matriz de covarianza podemos sacar de esta los vectores y los valores propios Los vectores propios nos darán las direcciones de los nuevos ejes (componentes principales), mientras que los valores propios nos dirán cuánta varianza hay en los datos a lo largo de esos ejes. A continuación, realizaremos un ejemplo sencillo de cómo se obtienen.

Imaginemos que tenemos un conjunto de datos con dos variables Y , X y vamos a calcular su matriz de covarianza y sus vectores y valores propios.






Para encontrar los valores propios (λ) y los vectores propios (v), necesitamos resolver la ecuación característica:





donde:

𝐴 es la matriz de covarianza.

𝜆 es un valor propio.

𝐼 es la matriz identidad del mismo tamaño que

det denota el determinante de la matriz.


Si calculamos la matriz de covarianza de nuestros datos seria la siguiente:


matriz de identidad:














Paso 2: Calcular el Determinante y Resolver para 𝜆


El determinante de 𝐴−𝜆𝐼 es:







Resolviendo la siguiente ecuación:


nos dará los valores propios.

Esta es una ecuación cuadrática en términos de 𝜆. Los valores propios λ que satisfacen esta ecuación son críticos porque indican las "direcciones" en las que la variación de los datos es máxima (en el caso del primer componente principal) y decreciente en importancia con los siguientes componentes principales.

Para resolver esta ecuación cuadrática, podemos utilizar la fórmula cuadrática:


Donde a=1, b=−3.333, y c=0.75. Sustituyendo estos valores en la fórmula, obtenemos:






Las soluciones a esta ecuación son los valores propios de la matriz de covarianza. Estos valores nos indican cuánta varianza hay en cada una de las direcciones (vectores propios) identificadas por PCA, y seleccionamos componentes basados en estos valores para maximizar la varianza retenida al reducir la dimensionalidad.

Finalmente, calcularíamos los vectores propios correspondientes a cada valor propio resolviendo (A−λI)v=0 para cada λ. Estos vectores propios son los que realmente forman los ejes o direcciones a lo largo de los cuales se proyectan los datos en el espacio de menor dimensionalidad.

Veámoslo con un ejemplo de dos variables una vez tenemos los vectores y valores propios estos proyectados en un gráfico bidimensional quedaría de la siguiente manera







No tenemos que observar la magnitud (longitud) de los vectores lo que en realidad importa es la dirección en la que apuntan los vectores. Esto nos dará la dirección la cual proyectar nuestros datos conservará la mayor cantidad de información. La operación que realizamos para proyectar nuestros datos se conoce como producto punto o producto escalar, entre cada fila del conjunto de datos y el vector PC1. Esto se hace para cada observación datos, transformándola a la nueva base definida por el vector del componente principal.

¿Qué es el Producto Punto?

El producto punto entre dos vectores es una operación que resulta en un único número (escalar). Matemáticamente, el producto punto de dos vectores a y b de longitud n se define como:

a⋅b=a1​×b1​+a2​×b2​+…+an​×bn​


ejemplifiquemos con el siguiente vector:




Este vector es solo de un componente principal.  el componente principal con que mayor varianza explica entonces ¿cómo sería el producto punto entre este vector y mis datos?  imaginemos que tenemos el siguiente DF.




Ahora veámoslo con una representación más matemática: 








Proyectar el DataFrame en los vectores propios haciendo el producto punto entre D(dataframe) y el vector propio del primer componente:




La multiplicación de matrices aquí calcula la combinación lineal de las columnas de D (variables) ponderada por los elementos de Vpc1 (vector propio del primer componente). El resultado es una nueva matriz donde cada registro es la proyección de los datos en el componente principal 1.


Ejemplo de Cálculo para la Proyección sobre PC1

Dada la primera fila del DataFrame con las coordenadas [17.042443, 27.017066], queremos calcular su proyección sobre el primer componente principal (PC1). 


El vector del componente principal PC1 es:

PC1 = [-0.99245292, 0.12262626]

Para calcular la proyección, realizamos el producto punto entre las coordenadas de la primera fila y el vector PC1:

Primera Fila Proyectada sobre PC1 = (17.042443 *-0.99245292) + (27.017066 * 0.12262626) 

Proyección = (-16.90638856) + (3.31324861) 

Proyección = -13.59313995 

 

Este valor representa la proyección de la primera fila sobre el componente principal PC1.


Este resultado es un número único, porque la proyección es sobre un único componente principal (PC1) reduce la dimensión de los datos a una sola medida por observación, que indica la "coordenada" de esa observación a lo largo del eje definido por PC1.

Conclusión

Este valor, -13.59313995 , representa cómo la primera observación se proyecta en el primer componente principal. Este componente, como recordamos, es el que captura la mayor parte de la varianza, lo cual es útil para análisis donde interesan los patrones principales de variabilidad dentro de los datos.


Si hacemos la proyección de cada registro por los dos vectores realizaríamos la siguiente rotación en nuestros datos:






dado que estamos solo haciendo una proyección la visualización correcta seria la siguiente:


Aplicación Práctica y Conclusión

 

El PCA es como realizar un "giro" en nuestros datos que maximiza la varianza conservada, similar a cómo podríamos ajustar una fotografía para enfocar mejor a un grupo de familiares. Este método es invaluable en grandes conjuntos de datos, facilitando la estimación eficiente de cuántos componentes principales son necesarios para captar la mayor parte de la varianza.

 

Es fundamental tener en cuenta el dominio específico de los datos y los objetivos del análisis al aplicar PCA. Este proceso no solo reduce la dimensionalidad, sino que también mejora la eficiencia computacional durante la modelización y ayuda a entender mejor cuánto contribuye cada variable a los componentes principales. Esta capacidad de discernir qué variables son más informativas respecto a la varianza es crucial para una exploración dirigida y profunda del conjunto de datos.

 

Agradezco profundamente tu atención hasta este punto. Para explorar más a fondo, te invito a acceder al cuaderno de Jupyter disponible en GitHub, donde se detalla todo el análisis y el código en Python. No dudes en descargarlo, experimentar con el análisis por ti mismo y compartir tus opiniones y sugerencias. ¡Tu participación y feedback son muy valorados!



si quieres acceder al Notebook donde está todo el código y la explicación en Python 👇👽


Comentarios

Entradas más populares de este blog

Regresión Logística

A continuación, quiero compartirte algunos de los conceptos de la regresión logística. abordaremos la pregunta del porqué de "regresión" en "regresión logística" Para poder comprender los temas que se presentaran a continuación necesitaras entender algunos conceptos antes los cuales iremos presentando y explicando a medida que nos adentramos más en este modelo. para empezar, debes entender que la regresión logística en un modelo esencial en el arsenal de un científico de datos ya que muchas veces usaremos la regresión logística para poner a "competir" con distintos modelos. Y usaremos las métricas de la regresión logística para de esta forma utilizar estas métricas como punto de partida para la elección del modelo. básicamente si un modelo más complejo no nos brinda mejores métricas que una regresión logística nos decantaremos como modelo a utilizar la regresión logística ya que esta no es una “Caja negra”. La regresión logística en si es un clasificado

Árboles de Decisión

Introducción a los Árboles de Decisión Los árboles de decisión son modelos de aprendizaje supervisado utilizados tanto para clasificación como para regresión. Su estructura recuerda a un árbol invertido, donde cada nodo interno representa una "prueba" en un atributo, cada rama representa el resultado de la prueba, y cada hoja representa una clase o un valor de salida.   Conceptos Fundamentales: 1.     Nodo raíz: Es el Nodo superior de árbol, que representa la variable inicial sobre la que se hará la     primera partición de nuestro conjunto de datos. 2.    . Nodos Internos: Representan las “Pruebas” sobre los atributos (características) de los datos. 3 .   . Hojas: Representan las predicciones o categorías finales. 4.   Ramas: son las conexiones entre nodos y representan el resultado de las pruebas de los nodos internos. Construccion del Arbol El proceso de construcción de un árbol de decisión implica seleccionar el mejor atributo en cada paso para dividir el con