5 votos

Combinando juntos componentes principales de PCA realizados en diferentes subconjuntos de un conjunto de datos grande

Estoy tratando de hacer el control de calidad de un proceso en el que los datos tienen más de un millón de filas con aproximadamente 60,000 variables en forma binaria. El objetivo del proceso era realizar un agrupamiento por k-medias, pero antes de eso, las 60,000 variables fueron sometidas a un PCA para reducir la dimensionalidad. Mi problema es que los datos se dividieron en lotes de 5000 variables, por lo que se realizaron 12 PCA separados en 5000 variables cada uno, luego se conservaron 500 CP de los 12 y luego se fusionaron.

Mi conocimiento de PCA no se extiende demasiado más allá de lo básico enseñado en la universidad, pero simplemente tengo la sensación de que podríamos estar perdiendo demasiadas correlaciones entre variables que se separan en su propio PCA.

¿Tengo razón en estar preocupado? ¿Hay otro enfoque que sería mejor, o hay alguna forma de cuantificar lo que podríamos estar perdiendo al hacer esto?

7voto

mkt Puntos 688

Nota: aunque la respuesta antigua (debajo de la línea) fue aceptada, el comentario de abajo me alertó sobre el hecho de que había interpretado mal la pregunta. Mi respuesta antigua se refiere a comparar PCs en diferentes lotes de observaciones (es decir, filas diferentes). Pero la pregunta en realidad se trata de hacer PCs en diferentes lotes de variables (es decir, columnas diferentes). Ahora abordaré esto.

Para reducir la dimensionalidad, un PCA calcula vectores ortogonales a partir de todo el conjunto de variables. Si no haces el PCA en todas las variables, por definición no estás logrando este objetivo básico. Al hacer PCAs en 5000 variables a la vez y retener 500 PCs de cada uno de los 12 lotes, corres el riesgo de capturar mucha información redundante en tu conjunto final de 6000 PCs. Si hay unos pocos ejes dominantes de variación, estos estarían siendo capturados una y otra vez en cada uno de los 12 lotes. Podrías comprobar en qué medida esto es cierto haciendo otro PCA en tus 6000 PCs agregados.

En cuanto a soluciones mejores, no soy un experto, pero aquí hay un par de ideas. (i) Hay métodos de PCA Incremental específicamente diseñados para esto, y creo que funcionan cargando algunas filas en memoria a la vez. (ii) Como eso implica, creo que necesitas usar todas las variables (columnas) para hacer el PCA, pero no necesitas usar todas las observaciones (filas). Entonces una opción simple es hacer el PCA en un subconjunto de las observaciones y luego aplicarlos al resto del conjunto de datos.


Tienes razón en que este es un problema: basado en cómo se ha hecho, los PCs no pueden ser comparados entre sí a través de lotes [de observaciones].

Esto se debe principalmente a que incluso pequeñas diferencias en la estructura de covarianza entre lotes llevarán a identificar vectores ortogonales diferentes. En otras palabras, ¡PC1 en el lote 1 y PC1 en el lote 2 representan cosas diferentes! Si examinas las cargas de algunos de los PCs a través de los lotes, verás estas diferencias. Pero incluso si la estructura de covarianza fuera idéntica por alguna razón mágica, un PC podría tener signos de coeficientes invertidos en un lote diferente porque estos son arbitrarios.

Lo más simple sería hacer un PCA en todos los datos simultáneamente. Si eso representa un desafío computacional demasiado grande, puedes hacerlo en un subconjunto aleatorio de los datos y luego aplicar ese PCA al resto de los datos. Esto se ha discutido en varias preguntas en este sitio, por ejemplo ¿Cómo se aplica PCA a nuevos datos?

Por cierto, observo que estás aplicando un PCA a datos binarios. Aunque se puede hacer, hay una discusión valiosa aquí sobre lo que implica y posibles alternativas mejores:

Realizando análisis de componentes principales o análisis factorial en datos binarios

¿Se puede aplicar el análisis de componentes principales a conjuntos de datos que contienen una mezcla de variables continuas y categóricas?

1 votos

Un poco tarde, pero agradecería si pudieras aclarar esto. En el OP, los datos se agruparon de tal manera que cada lote tenía las mismas filas pero diferentes columnas. Debido a esto, es bastante obvio que PC1 en el lote 1 y PC1 en el lote 2 representan cosas diferentes. No veo necesariamente por qué eso es un problema, ya que la idea es presumiblemente obtener diferentes conjuntos de PCs para diferentes subconjuntos de variables y luego concatenarlos juntos. El problema de las correlaciones faltantes seguiría existiendo, ¿pero esto seguiría siendo inválido?

0 votos

@tborenst No he estado aquí por un tiempo, por lo que pido disculpas por la respuesta tardía. ¡Tienes toda la razón, malinterpreté la pregunta! Ahora he intentado responder la pregunta real.

1 votos

¡Muchas gracias! Eso es realmente útil. Aprecio que hayas vuelto y hayas actualizado la pregunta.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X