¿Es posible la PCA a gran escala?

10

La forma clásica del análisis de componentes principales (PCA) es hacerlo en una matriz de datos de entrada cuyas columnas tienen media cero (entonces PCA puede "maximizar la varianza"). Esto se puede lograr fácilmente centrando las columnas. Sin embargo, cuando la matriz de entrada es escasa, la matriz centrada ahora será más escasa y, si la matriz es muy grande, ya no quedará en la memoria. ¿Existe una solución algorítmica para el problema de almacenamiento?

Roy
fuente
55
Incluso si la matriz de datos completa no cabe en la memoria, es muy posible que la covarianza o la matriz de Gram encajen en la memoria. Esos son suficientes para realizar PCA. ¿En qué tamaño de la matriz de datos de entrada está pensando? Consulte también stats.stackexchange.com/questions/35185 .
ameba
1
@amoeba: estoy viendo 500K muestras (filas) y 300K características (columnas)
Roy
En cuanto al software, Apache Spark lo tiene spark.apache.org/docs/latest/… seguro que la implementación trata con datos sin memoria
Tim

Respuestas:

11

Sí, es posible.

Si la matriz de datos no cabe en la RAM, todavía no es el fin del mundo: existen algoritmos eficientes que pueden trabajar con datos almacenados en un disco duro. Ver, por ejemplo, PCA aleatorizado como se describe en Halko et al., 2010, Algoritmo para el análisis de componentes principales de grandes conjuntos de datos .

En la Sección 6.2, los autores mencionan que probaron su algoritmo en una matriz de datos de 400k por 100k y que

El algoritmo del presente trabajo requirió 12.3 horas para procesar todos los 150 GB de este conjunto de datos almacenados en el disco, utilizando la computadora portátil con 1.5 GB de RAM [...].

Tenga en cuenta que esto fue en los viejos tiempos de los discos duros magnéticos; hoy en día hay disponibles unidades de estado sólido mucho más rápidas, por lo que supongo que el mismo algoritmo funcionaría considerablemente más rápido.

Vea también este viejo hilo para más discusión sobre PCA aleatorizado: ¿El mejor algoritmo PCA para una gran cantidad de características (> 10K)? y esta gran revisión de 2011 por Halko et al .: Encontrar estructura con aleatoriedad: Algoritmos probabilísticos para construir descomposiciones matriciales aproximadas .

ameba
fuente