Question

Basé sur cette réponse , nous savons que nous pouvons réaliser la construction matrice de covariance progressivement quand il y a trop d'observations, alors que nous pouvons effectuer SVD aléatoire quand il y a trop de variables.

La réponse fournit sont claires et utiles. Cependant, si nous avons une grande quantité d'observations et variables ? par exemple. 500.000 échantillons avec 600.000 observations. Dans ce cas, la matrice de covariance sera énorme (par exemple 2 000 Go, en supposant flotteur 8byte, et si mon calcul est correct) et sera impossible de l'adapter en mémoire.

Dans un tel scénario, il est tout ce que nous pouvons faire pour calculer l'APC, en supposant que nous voulons que les premiers PC (par exemple 15 PC)?

Était-ce utile?

La solution

Il y a un certain nombre de choses que vous pouvez faire.

  1. Exemple d'un représentant, mais petit ensemble de vos données, ce qui vous permettra de calculer PCA en mémoire. Mais voyant que vous avez 600,00 observations ce sera très probablement pas donner lieu à des résultats significatifs.
  2. Utilisez incrémentale PCA, voici un lien: http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposition.IncrementalPCA

Mais le principal problème que vous avez est qu'un certain nombre d'échantillons est inférieure à la quantité d'observations que vous avez. Je recommande une approche différente de la réduction de dimensionnalité. Autoencoders serait ma recommandation pour vous. Autoencoders peuvent être formés de manière itérative, contourner votre problème de mémoire, et peuvent apprendre des projections plus complexes que PCA (ce qui est une transformation linéaire). Si vous voulez une projection linéaire, vous pouvez avoir un autoencoder avec une couche cachée, et la solution trouvée par le réseau de neurones sera égale à la solution trouvée par l'APC.

Voici quelques liens que vous trouverez utiles:

Licencié sous: CC-BY-SA avec attribution
scroll top