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?
10
Respuestas:
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
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 .
fuente