3 votos

MemoryError for ScikitLearn Kernel PCA

Tengo un conjunto de datos que consta de unos 170.000 vectores de entrada con 3.000 características cada uno. En este conjunto de datos me gustaría realizar un Kernel PCA utilizando scikit-learn . Desgraciadamente, cualquier intento resulta siempre:

Error de memoria

Estoy en un PC que tiene 32 GB de RAM y la configuración de la copia_X a 'false' no ayuda. ¿Alguna sugerencia?

3voto

Even Mien Puntos 10122

Aunque el SO parece ser más adecuado para esta pregunta, hay que tener en cuenta el conocimiento teórico del algoritmo.

En Wikipedia hay un párrafo específico relacionado con las muestras grandes. Al igual que la SVM (kernel), es necesario calcular toda la matriz $K(x_i, x_j)$ . En el sitio web $x_i$ son sus puntos de muestra. Tienes 170 000 de ellos, así que 170 000 ^ 2 términos para calcular (y almacenar) en la matriz $K$ . Incluso con suficiente memoria, dudo que el cálculo termine.

Una aproximación podría ser (de la wikipedia) :

Una forma de resolver esto es realizar una agrupación en el conjunto de datos y rellenar el núcleo con las medias de esos grupos. Dado que incluso este método puede dar lugar a un K relativamente grande, es habitual calcular sólo los principales P valores propios y vectores propios de K.

O para buscar implementaciones de streaming de KPCA.

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