Frage

Bezogen auf Diese Antwort, Wir wissen, dass wir bei zu vielen Beobachtungen inkrementell Build -Kovarianzmatrix durchführen können, während wir bei zu vielen Variablen randomisierte SVD durchführen können.

Die Antwort für die Antwort ist klar und hilfreich. Was ist jedoch, wenn wir eine große Menge an Beobachtungen haben? UND Variablen? zB 500.000 Proben mit 600.000 Beobachtungen. In diesem Fall wird die Kovarianzmatrix riesig sein (z. B. 2.000 GB, vorausgesetzt 8Byte Float und wenn meine Berechnung korrekt ist) und uns unmöglich für uns in das Gedächtnis einfügen.

Gibt es in einem solchen Szenario etwas, das wir tun können, um die PCA zu berechnen, vorausgesetzt, wir möchten nur die Top -PCs (z. B. 15 PCs)?

War es hilfreich?

Lösung

Es gibt ein paar Dinge, die Sie tun können.

  1. Probieren Sie einen repräsentativen, aber kleinen Satz Ihrer Daten, mit dem Sie PCA im Speicher berechnen können. Da Sie jedoch 600,00 Beobachtungen haben, wird dies höchstwahrscheinlich nicht zu bedeutenden Ergebnissen führen.
  2. Verwenden Sie inkrementelle PCA, hier ist ein Link: http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.incrementalpca.html#sklearn.decomposition.incrementalpca

Das Hauptproblem ist jedoch, dass eine Reihe von Proben geringer ist als die Menge an Beobachtungen, die Sie haben. Ich würde einen anderen Ansatz zur Reduzierung der Dimensionalität empfehlen. Autocoder wären meine Empfehlung an Sie. Autocoder können iterativ geschult werden, um Ihr Gedächtnisproblem zu umgehen und kompliziertere Projektionen zu lernen als PCA (was eine lineare Transformation ist). Falls Sie eine lineare Projektion wünschen, können Sie einen Autocoder mit einer versteckten Schicht haben, und die vom neuronale Netzwerk gefundene Lösung entspricht der von PCA gefundenen Lösung.

Hier sind ein paar Links, die Sie hilfreich finden:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top