Klasycznym sposobem analizy głównych składowych (PCA) jest wykonanie macierzy danych wejściowych, których kolumny mają zerową średnią (wtedy PCA może „maksymalizować wariancję”). Można to łatwo osiągnąć poprzez centrowanie kolumn. Jednak gdy matryca wejściowa jest rzadka, matryca środkowa będzie już rzadsza i - jeśli matryca jest bardzo duża - nie będzie już pasować do pamięci. Czy istnieje algorytmiczne rozwiązanie problemu z pamięcią masową?
10
Odpowiedzi:
Tak to mozliwe.
Jeśli matryca danych nie mieści się w pamięci RAM, to jeszcze nie koniec świata: istnieją wydajne algorytmy, które mogą pracować z danymi przechowywanymi na dysku twardym. Patrz np. Randomizowany PCA, jak opisano w Halko i in., 2010, Algorytm analizy głównej składowej dużych zbiorów danych .
W sekcji 6.2 autorzy wspominają, że wypróbowali swój algorytm na 400k razy 100k macierzy danych i to
Zauważ, że było to w dawnych czasach magnetycznych dysków twardych; dziś dostępne są znacznie szybsze dyski półprzewodnikowe, więc wydaje mi się, że ten sam algorytm działałby znacznie szybciej.
Zobacz także ten stary wątek, aby uzyskać więcej informacji na temat randomizowanego PCA: Najlepszy algorytm PCA dla ogromnej liczby funkcji (> 10 KB)? oraz ten obszerny przegląd z 2011 r. autorstwa Halko i wsp .: Znalezienie struktury z przypadkowością: algorytmy probabilistyczne do konstruowania przybliżonych rozkładów macierzy .
źródło