Chciałbym wykonać PCA na zestawie danych złożonym z około 40 000 próbek, z których każda zawiera około 10 000 funkcji.
Używanie funkcji princomp Matlaba konsekwentnie zajmuje ponad pół godziny, w którym to momencie zabijam proces. Chciałbym znaleźć implementację / algorytm, który działa w mniej niż 10 minut. Jaki byłby najszybszy algorytm? Jak długo potrwa na i7 dual core / 4GB Ram?
high-dimensional
data-analysis
łagodny
źródło
źródło
Odpowiedzi:
Przede wszystkim powinieneś określić, czy chcesz wszystkie komponenty, czy te najbardziej znaczące?
źródło
Myślę, że potrzebujesz tylko kilku (lub kilkuset) dominujących pojedynczych par wartość / wektor. Następnie najlepiej zastosować metodę iteracyjną, która będzie znacznie szybsza i zużyje znacznie mniej pamięci.
W Matlabie patrz
pomoc svds
źródło
Możesz sprawdzić moją odpowiedź w Cross Validated . Nie chciałem go tutaj kopiować. Zasadniczo można użyć szybkiego, randomizowanego SVD do obliczenia podstawy PCA i współczynników.
źródło
Możesz wypróbować algorytm Fast PCA oparty na iteracyjnym sposobie obliczania kilku wektorów własnych. Patrz A. Sharma i KK Paliwal, Szybka analiza głównych składników za pomocą analizy stałoprzecinkowej, Pattern Recognition Letters, 28, 1151-1155, 2007 .
źródło