Domanda

In base a questa risposta , sappiamo che siamo in grado di effettuare la matrice di covarianza costruire in modo incrementale quando ci sono troppe osservazioni, mentre siamo in grado di effettuare SVD randomizzato quando ci sono troppe variabili.

La risposta forniscono sono chiare e disponibile. Tuttavia, quello che se abbiamo una grande quantità di osservazioni e le variabili? per esempio. 500.000 campioni con 600.000 osservazioni. In questo caso, la matrice di covarianza sarà enorme (ad esempio 2.000 GB, assumendo galleggiante 8byte, e se il calcolo è corretto) e sarà impossibile per noi misura in memoria.

In tale scenario, c'è qualcosa che possiamo fare per calcolare il PCA, assumendo vogliamo solo i PC top (ad esempio 15 PC)?

È stato utile?

Soluzione

Ci sono un paio di cose che si può fare.

  1. provate un rappresentante, ma piccolo insieme di dati, che vi permetterà di calcolare PCA in memoria. Ma visto che hai 600,00 osservazioni questo sarà molto probabilmente non comportare alcun risultato significativo.
  2. Usa incrementale PCA, ecco un link: http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposition.IncrementalPCA

Ma il problema principale che hai è che un certo numero di campioni sono meno rispetto alla quantità di osservazioni che avete. Mi sento di raccomandare un approccio diverso alla riduzione dimensionalità. Autoencoders sarebbe la mia raccomandazione a voi. Autoencoders possono essere addestrati in modo iterativo, aggirando il problema della memoria, e possono imparare le proiezioni più complicato di APC (che è una trasformazione lineare). Nel caso in cui si desidera una proiezione lineare è possibile avere un autoencoder con uno strato nascosto, e la soluzione trovata dalla rete neurale sarà pari alla soluzione trovata da PCA.

Qui ci sono un paio di link troverete utili:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top