Principal Component Analysis

Michael Greenacre – Patrick J. F. Groenen – Trevor Hastie – Alfonso Iodice d’Enza
Angelos Markos – Elena Tuzhilina

Nicolás Romero – David Chaparro – Mario Castaño

UNAL - Departamento de estadística

jueves, 28 de noviembre de 2024

Contenido

  1. Introducción
  2. Experimentación
  3. Resultados
  4. Aplicaciones
  5. Reproducibilidad y depósito de datos
  6. Limitaciones y optimizaciones
  7. Perspectivas
  8. Conclusiones finales

Introducción

  • PCA es una técnica estadística multivariada que resume información compleja.
  • Permite identificar patrones en los datos y reducir su dimensionalidad.
  • Los componentes principales (PCs) resumen la mayor parte de la variabilidad de los datos originales.

Ejemplo introductorio: Informe Mundial de la Felicidad 2021 para analizar indicadores de bienestar en 149 países.

  • Apoyo social (Social)
  • Esperanza de vida saludable (Life)
  • Libertad de elección (Choices)
  • Generosidad (Generosity)
  • Percepción de corrupción (Corruption)

El PCA busca una combinación lineal de los indicadores que maximice la varianza. Es decir, los combina de manera que reflejen la mayor variación entre los \(149\) países.

\[ \small\textrm{PC}1 = 0.538 (Social) + 0.563 (Life) + 0.498 (Choices) − 0.004 (Generosity) - 0.381 (Corruption) \] \[ \small\textrm{PC}2 = − 0.266 (Social) − 0.243 (Life) + 0.258 (Choices) + 0.799 (Generosity) − 0.407 (Corruption) \]

Representación gráfica de los componentes principales en un espacio bidimensional

Experimentación

Estandarización de variables
flowchart LR
  A(Estandarizar\n las variables) --> B(El PCA tiene como objetivo explicar las variaciones de las variables,\n por lo que es esencial que ciertas variables no contribuyan excesivamente\n a esa variación por razones ajenas a la pregunta de investigación.)
  B --> C[En situaciones donde hay variables en diferentes\n escalas, es preferible centrar los datos en la media y dividir\n sobre la desviación estándar.]
  B --> D[Si los datos son de escala positiva y se transforman logarítmicamente,\n esto ya es una forma de estandarización de las variables para tener\n escalas aditivas comparables que reflejen las diferencias multiplicativas en las variables.]

Reducción de la dimensionalidad
flowchart LR
  A(Dos caminos) --> B[Eigenvalue decomposition EVD]
  A --> C[singular value decomposition SVD]
  • La EVD se aplica sobre la matriz de covarianza de los datos

  • La SVD se aplica a la matrix de datos opcionalmente estandarizada, pero al menos centrada.

Descomposición en valores propios (EVD)

calcula valores propios, denotados habitualmente por \(\lambda_1,\lambda_2,\cdots\) valores positivos en orden descendente, así como vectores propios correspondientes a cada valor propio, denotados por \(v_1,v_2,\cdots\)

Descomposición en valores singulares (SVD)

Da como resultado un conjunto de valores singulares positivos y dos conjuntos de vectores, los vectores singulares izquierdo y derecho, para las filas y columnas respectivamente. Los valores singulares son proporcionales a las raíces cuadradas de los valores propios de la matriz de covarianza y los vectores singulares izquierdo y derecho conducen a la visualización conjunta de casos y variables en forma de un diagrama de dispersión bidimensional.

La descomposición SVD y las coordenadas del biplot PCA

Dada una matrix \(X_{n\times p}\) ya centrada o posiblemente estandarizada. La SVD descompone a \(X\) en tres matrices:

\[X=UDV^{t}\] donde,

  • \(D\) es la matriz diagonal de los valores singulares (positivos) \(\alpha_1,\alpha_2, \cdots\) en orden descendente
  • \(U\) y \(V\) son las matrices de los vectores singulares izquierdo y derecho (con columnas \(u_1,u_2,…\)y \(v_1,v_2, \cdots\)) y son ortonormales: \(U^{t}U = V^{t}V = I\)

Escrita como una suma de productos de los vectores individuales, SVD de \(X\) queda:

\[\sum_{k=1}^{m}\alpha_ku_kf_k^{t}\] Donde \(m\) es el rango de \(X\). Dado que la suma de los cuadrados de cada matriz de rango 1 \(u_kv_k^{t}\) es igual a 1 y los valores singulares están en orden descendente, esto sugiere que tomar los primeros términos de la suma dará una aproximación a \(X\).

Para el biplot, las coordenadas de la fila PCA (principal) en \(r\) dimensiones están en las primeras \(r\) columnas de \(UD\), y las coordenadas de la columna (estándar) en las primeras \(r\) columnas de \(V\). Los cuadrados de los valores singulares, expresados en relación con su suma, dan los porcentajes de varianza explicada.

Resultados

Dimensionalidad de la solución de un PCA

\(\textbf{Pregunta de interés:}\) Qué tanta varianza de los datos es explicada por las consecutivas dimensiones de la solución?

  • PCA clasifica la variación de los datos en las características principales de los datos en las dimensiones principales y lo que se considera ruido aleatorio, en las dimensiones menores.

  • La secuencia de porcentajes de varianza explicada sugiere cuantas dimensiones NO ALEATORIAS hay.

Gráfico de sedimentación (scree plot)

La solución de un PCA no tiene por qué ser siempre de dos dimensiones.

La solución puede ser de una sola dimensión, o más de dos.

  • El primer caso puede ser visualizado en dos dimensiones usando las dos primeras componentes, pero la segunda componente posiblemente representará una variación alaetoria.
  • Si la solución es tridimensional, se pueden usar gráficos 3D o gráficos 2D para cada par de dimensiones separadamente. Esto último también es válido cuando la solución tiene cuatro dimensiones o más.

Interpretación del PCA y biplot

\[ \tiny\textrm{PC}1 = 0.538 (Social) + 0.563 (Life) + 0.498 (Choices) − 0.004 (Generosity) - 0.381 (Corruption) \] \[ \tiny\textrm{PC}2 = − 0.266 (Social) − 0.243 (Life) + 0.258 (Choices) + 0.799 (Generosity) − 0.407 (Corruption) \]

PC1 PC2 PC3 PC4 PC5 SS
Valores singulares
$$\textrm{Valores singulares}/\sqrt(n)$$ 1.527 1.103 0.835 0.689 0.494 5
Correlaciones entre las componentes principales y las variables originales
$$\textrm{Social}$$ 0.825 0.295 0.303 0.183 -0.328 1
$$\textrm{Life}$$ 0.862 0.269 0.002 0.252 0.347 1
$$\textrm{Choises}$$ 0.764 -0.285 0.178 -0.549 0.05 1
$$\textrm{Generosity}$$ -0.007 -0.884 0.38 0.268 0.038 1
$$\textrm{Corruption}$$ -0.584 0.451 0.659 -0.091 0.114 1
Variabiliad explicada por variable
$$R^2. \mathrm{Social}$$ 0.68 0.087 0.092 0.033 0.108
$$R^2. \mathrm{Life}$$ 0.744 0.072 0 0.063 0.121
$$R^2. \mathrm{Choises}$$ 0.583 0.081 0.032 0.301 0.002
$$R^2. \mathrm{Generosity}$$ 0 0.782 0.145 0.072 0.001
$$R^2. \mathrm{Corruption}$$ 0.341 0.203 0.435 0.008 0.013
Variabilidad explicada
$$\textrm{SS}$$ 2.348 1.226 0.703 0.478 0.245 5
$$\%$$ 46.97% 24.51% 14.05% 9.57% 4.91% 100.00%

Aplicaciones

Datos de alta dimensionalidad - casos agrupados

Datos Genéticos en Cáncer Infantil

Contexto: El conjunto de datos consiste en una matriz de tamaño \(63 \times 2308\) de expresiones genéticas en 63 niños y 2308 genes.

Los niños tienen tumores pequeños, redondos y de células azules, clasificados en cuatro tipos principales:

  • BL (Burkitt lymphoma)
  • EW (Ewing’s sarcoma)
  • NB (neuroblastoma)
  • RM (rhabdomyosarcoma)

Los datos ya están log-transformados.

Objetivos:

  • Identificar genes relevantes para la clasificación de tumores.
  • Separar grupos tumorales usando PCA supervisado y no supervisado.

PCA no supervisado

Superposición entre grupos EW y RM.

PCA supervisado

Separación clara de grupos basada en centroides.

Sparse PCA

Reducción de genes a los más relevantes con mínima pérdida de varianza.

Sparce PCA de centroides de grupos

Representación reducida de los centroides de grupos.

Análisis de Correspondencias

Datos del Mar de Barents

Contexto: Muestras recolectadas entre 1999 y 2004 en el Mar de Barents.

  • 600 muestras: Cada muestra corresponde a 15 minutos de arrastre.
  • 66 especies de peces: Datos dispersos con un \(82.6\%\) de valores cero.

Objetivos:

  • Identificar cambios temporales en la composición de especies.
  • Evaluar la evolución de las abundancias relativas entre los años.

Resultados:

  • Las elipses de confianza del \(95\%\) muestran separación entre 1999 y años posteriores.
  • Especies clave: Pa_bo (camarón), más abundante en 1999. Tr_es (faneca noruega) Predomina en 2004.
  • Cambios temporales significativos respaldados por el análisis.

Datos Mixtos

  • Combina variables continuas y categóricas para encontrar relaciones clave.
  • Útil en:
    • Encuestas que mezclan tipos de preguntas.
    • Análisis de intervalos, como temperaturas o precios.

Derivación de escalas e índices

  • Permite crear índices combinando múltiples indicadores.
  • Amplia aplicación en:
    • Economía.
    • Políticas públicas.
    • Estudios sociales.

Reproducibilidad y depósito de datos

Limitaciones y optimizaciones

Pueden existir limitaciones prácticas cuando el PCA es aplicado. Esto debido al gran tamaño y dimensionalidad del conjunto de datos en cuestión, generando problemas computacionales.

Ejemplos claros de este problema pueden surgir en aplicaciones tales como:

  • Clasificación de imágenes,
  • Compresión de imágenes,
  • Reconocimiento facial
  • Modelamiento de procesos industriales,
  • Finanzas cuantitativas,
  • Neurociencia,
  • Génetica,
  • Genómica,

entre otros.

Las descomposiciones EVD y SVD son computacionalmente demandantes cuando las matrices son muy grandes, y además requieren guardar la matriz completa en la memoria.

Soluciones:
  • Métodos batch (por lotes): Procesa todos los datos a la vez (offline), adecuado cuando los datos pueden almacenarse en memoria.
  • Métodos Incrementales (en línea): Actualiza la descomposición con cada nuevo conjunto de datos (online), ideal para flujos de datos en tiempo real o cuando la matriz es demasiado grande para ser almacenada de una sola vez.

Imputación de datos faltantes usando SVD

Cuando la matriz de datos es parcialmente observada (hay datos faltantes), existen alternativas para proceder con la aplicación del PCA:

  • Remover las filas (casos) de la matriz con datos faltantes.
  • Reemplazar los valores faltantes de una columna en específico por su respectiva media.
  • Reconstrucción de la matriz usando SVD

Este último método, asume que \(X\) es una matrix con valores faltantes que ha sido centrada y escalada usando los valores observados. La idea es encontrar la matriz \(X\) de rango \(r\), denotada \(X_r\) que minimice la suma de cuadrados de la matriz original.

Algoritmo de imputación de datos mediante SVD

Ejemplo de simulación: Se simula el \(10\%\) de datos faltantes en la matriz de datos completa del World Happiness Report la cuál tiene \(149 \times 5 = 745\) entradas.

#####################
prop <- 0.1
nrep <- 100
#####################

df <- HAPPY
info <- df[,c(1:2)] %>%
  rename(country = 1, region = 2)
df <- df[,c(8:12)] %>% 
  rename(social = 1, life = 2, choice = 3, generosity = 4, corruption = 5) %>%
  mutate(life = as.numeric(gsub(",","",life)))
n <- nrow(df) * ncol(df)

rss <- function(X, A){
  sum((X - A)^2, na.rm = TRUE)
}

mPCA <- function(X, rank, maxit = 100, thresh = 1e-5){
  A <- outer(rep(1, nrow(X)), colMeans(X, na.rm = T))
  score0 <- rss(X, A)
  delta <- Inf
  it <- 0
  while(it < maxit & delta > thresh){
    #impute
    Xtilde <- X
    Xtilde[is.na(X)] <- A[is.na(X)]
    #center
    m <- colMeans(Xtilde)
    Xtilde <- scale(Xtilde, center = m, scale = F)
    #lrma
    SVD <- svd(Xtilde)
    A <- SVD$u[, 1:rank, drop = F] %*% diag(SVD$d[1:rank], rank, rank) %*% t(SVD$v[, 1:rank, drop = F])
    #unscale
    A <- scale(A, center = -m, scale = F)
    #loss
    score <- rss(X, A)
    delta <- abs((score - score0)/score0)
    #cat("iter", it , "rss", score, "delta", delta, "\n")
    score0 <- score
    it <- it + 1
  }
  return(score)
}

mPCAnull <- function(X){
  A <- outer(rep(1, nrow(X)), colMeans(X, na.rm = T))
  score0 <- rss(X, A)
  return(score0)
}

result <- c()
for(rep in 1:nrep){
  missing <- sample(1:n, n*prop)
  df_upd <- as.matrix(df)
  df_upd[missing] <- NA
  s <- apply(df_upd, 2, sd, na.rm = T)
  df_upd <- scale(df_upd, scale = s, center = F) 
  
  score0 <- mPCAnull(df_upd) 
  result <- rbind(result, data.frame(rss = score0, r2 = 0, rank = 0, rep = rep))
  for(rank in 1:4){
    score <- mPCA(df_upd, rank)
    result <- rbind(result, data.frame(rss = score, r2 = 1 - score/score0, rank = rank, rep = rep))
  }
}


resultsum <- result %>% group_by(rep) %>% 
  mutate(vardiff = r2 - lag(r2)) %>% 
  filter(rank > 0) %>% 
  group_by(rank) %>% 
  summarise(mean = mean(vardiff), upper = quantile(vardiff, 0.975), lower = quantile(vardiff, 0.025))
  
ggplot(resultsum, aes(x = rank, y = mean)) + 
  geom_bar(stat="identity", fill = "lightskyblue2", color = "black",
           position=position_dodge(), width = 0.7) +
  geom_errorbar(aes(ymin = upper, ymax= lower), width=.2,
                position=position_dodge(.9)) +
  ylab("variance explained")+
  xlab("PC dimension")+
  theme_classic() |>   theme(
    axis.text.x = element_text(size = 14), # Increase x-axis tick labels
    axis.text.y = element_text(size = 14), # Increase y-axis tick labels
    axis.title.x = element_text(size = 16), # Increase x-axis title
    axis.title.y = element_text(size = 16)  # Increase y-axis title
  )

Netflix competition

\(480189 \hspace{0.1cm} \textrm{usuarios} \times 17770 \hspace{0.1cm}\textrm{películas}\). En promedio, cada usuario calificó alrededor de 200 películas, por lo que se observó apenas el \(1\%\) de la matriz.

\[M \approx CG^T\] \[\widehat{M} = CG^T\] \[\widehat{m}_{ij} = \sum_{k=1}^r c_{ik}g_{jk}\] \[\textrm{RSS} = \sum(m_{ij} - \widehat{m}_{ij})^2\] Esta imputación masiva sería inviable mediante el anterior algoritmo. Se requiere una versión mejorada con estrategias adicionales. Hay dos algoritmos: SoftImpute y HardImpute.

Perspectivas del PCA

  • Versatilidad del PCA:
    • Herramienta esencial para análisis exploratorio y aprendizaje no supervisado.
    • Aplicable a diversas áreas como:
      • Genética.
      • Ecología.
      • Negocios.
      • Procesamiento de señales.
  • Innovaciones Recientes:
    • Sparse PCA:
      • Reduce dimensionalidad seleccionando variables relevantes.
      • Útil en datasets con miles de variables.
    • PCA Supervisado:
      • Optimiza la separación entre grupos.
      • Ejemplo: Clasificación de tumores en estudios genéticos.
  • Aplicaciones No Tradicionales:
    • Imágenes:
      • Clasificación de patrones como dígitos manuscritos.
    • Formas:
      • Análisis de variaciones en alas de mosquitos.
    • Funciones:
      • Análisis de curvas de movimiento humano.

Conclusiones finales

  • PCA como herramienta en la reducción de la dimensionalidad: Se ha mostrado cómo este método simple y versátil puede extraer la información esencial de conjuntos de datos multivariados complejos.
  • Análisis descriptivo de los datos: El PCA Permite descubrir patrones subyacentes, relaciones entre variables y detectar anomalías que de otro modo serían difíciles de identificar en grandes conjuntos de datos.
  • Interpretación de las componentes: Aunque el PCA reduce la dimensionalidad, la interpretación de las componentes principales puede ser compleja, especialmente en casos donde las variables originales tienen un significado claro. Es clave poder asociar las componentes obtenidas con las características originales de los datos.

Conclusiones finales

  • Limitaciones: Una de las limitaciones más importantes del PCA es su sensibilidad a la escala de las variables. Además, PCA es un método lineal, lo que significa que no captura relaciones no lineales entre las variables. Esto puede ser una restricción en conjuntos de datos más complejos.
  • Diversidad de aplicaciones: La aplicabilidad del PCA es transversal a muchas disciplinas científicas. En todos esos campos, ayuda a reducir la complejidad de los datos (múltiples tipos de objetos) y a facilitar la interpretación y visualización de grandes cantidades de información.
  • Variantes del PCA: Se han desarrollado variantes del PCA clásico con el fin de reducir las limitaciones del método. Algunas variantes son: Sparce PCA, PCA con valores faltantes, PCA supervisado, entre otros.