Ist eine groß angelegte PCA überhaupt möglich?

10

Die klassische Methode der Hauptkomponentenanalyse (PCA) besteht darin, sie auf einer Eingabedatenmatrix durchzuführen, deren Spalten den Mittelwert Null haben (dann kann PCA die Varianz "maximieren"). Dies kann leicht durch Zentrieren der Säulen erreicht werden. Wenn jedoch die Eingabematrix dünn ist, ist die zentrierte Matrix jetzt länger dünn und passt - wenn die Matrix sehr groß ist - nicht mehr in den Speicher. Gibt es eine algorithmische Lösung für das Speicherproblem?

Roy
quelle
5
Selbst wenn die vollständige Datenmatrix nicht in den Speicher passt, kann es durchaus sein, dass entweder die Kovarianz oder die Gram-Matrix in den Speicher passt. Diese reichen aus, um PCA durchzuführen. Über welche Größe der Eingabedatenmatrix denken Sie nach? Siehe auch stats.stackexchange.com/questions/35185 .
Amöbe sagt Reinstate Monica
1
@amoeba: Ich schaue auf 500K Beispiele (Zeilen) und 300K Features (Spalten)
Roy
In Bezug auf Software hat Apache Spark es spark.apache.org/docs/latest/… sicher, dass die Implementierung Daten mit nicht genügend Speicher behandelt
Tim

Antworten:

11

Ja, es ist möglich.

Wenn die Datenmatrix nicht in den Arbeitsspeicher passt, ist dies noch nicht das Ende der Welt: Es gibt effiziente Algorithmen, die mit auf einer Festplatte gespeicherten Daten arbeiten können. Siehe z. B. randomisierte PCA, wie in Halko et al., 2010, Ein Algorithmus zur Hauptkomponentenanalyse großer Datenmengen beschrieben .

In Abschnitt 6.2 erwähnen die Autoren, dass sie ihren Algorithmus auf einer 400k mal 100.000 Datenmatrix ausprobiert haben und dass

Der Algorithmus des vorliegenden Papiers benötigte 12,3 Stunden, um alle 150 GB dieses auf der Festplatte gespeicherten Datensatzes unter Verwendung des Laptops mit 1,5 GB RAM [...] zu verarbeiten.

Beachten Sie, dass dies in den alten Tagen der magnetischen Festplatten war; Heutzutage sind viel schnellere Solid-State-Laufwerke verfügbar, daher würde derselbe Algorithmus vermutlich erheblich schneller arbeiten.

Weitere Informationen zu randomisierten PCA finden Sie in diesem alten Thread: Bester PCA-Algorithmus für eine Vielzahl von Funktionen (> 10 KB)? und diese große Übersicht von 2011 von Halko et al.: Struktur mit Zufälligkeit finden: Probabilistische Algorithmen zur Konstruktion ungefährer Matrixzerlegungen .

Amöbe sagt Reinstate Monica
quelle