La PCA su larga scala è persino possibile?


10

Il modo classico di analisi dei componenti principali (PCA) è quello di farlo su una matrice di dati di input le cui colonne hanno media zero (quindi il PCA può "massimizzare la varianza"). Ciò può essere ottenuto facilmente centrando le colonne. Tuttavia, quando la matrice di input è sparsa, la matrice centrata ora sarà più sparsa e, se la matrice è molto grande, non si adatta più alla memoria. Esiste una soluzione algoritmica per il problema di archiviazione?


5
Anche se la matrice di dati completa non si adatta alla memoria, può benissimo essere che la covarianza o la matrice Gram si adattino alla memoria. Sono sufficienti per eseguire la PCA. A quale dimensione della matrice di dati di input stai pensando? Vedi anche stats.stackexchange.com/questions/35185 .
ameba,

1
@amoeba: sto guardando 500K campioni (righe) e 300K caratteristiche (colonne)
Roy

Per quanto riguarda il software, Apache Spark ha spark.apache.org/docs/latest/… di sicuro l'implementazione si occupa di dati di memoria insufficiente
Tim

Risposte:


11

Sì, è possibile.

Se la matrice di dati non si adatta alla RAM, non è ancora la fine del mondo: esistono algoritmi efficienti che possono funzionare con i dati memorizzati su un disco rigido. Vedi ad esempio PCA randomizzato come descritto in Halko et al., 2010, Un algoritmo per l'analisi dei componenti principali di grandi serie di dati .

Nella Sezione 6.2 gli autori menzionano che hanno provato il loro algoritmo su una matrice di dati 400k volte 100k e quello

L'algoritmo del presente documento ha richiesto 12,3 ore per elaborare tutti i 150 GB di questo set di dati memorizzati su disco, utilizzando il computer portatile con 1,5 GB di RAM [...].

Si noti che questo era ai vecchi tempi dei dischi rigidi magnetici; oggi ci sono unità a stato solido molto più veloci disponibili, quindi immagino che lo stesso algoritmo funzionerebbe molto più velocemente.

Vedi anche questo vecchio thread per ulteriori discussioni sul PCA randomizzato: il miglior algoritmo PCA per un numero enorme di funzionalità (> 10K)? e questa grande recensione del 2011 di Halko et al .: Trovare la struttura con casualità: algoritmi probabilistici per la costruzione di decomposizioni approssimative della matrice .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.