Я хотел бы выполнить PCA для набора данных, состоящего из приблизительно 40 000 выборок, каждая из которых отображает около 10 000 функций.
Использование функции Matlab princomp последовательно занимает более получаса, после чего я завершаю процесс. Я хотел бы найти реализацию / алгоритм, который работает менее чем за 10 минут. Какой будет самый быстрый алгоритм? Сколько времени займет двухъядерный процессор i7 / 4 Гбайт памяти?
high-dimensional
data-analysis
созревать
источник
источник
Ответы:
Прежде всего, вы должны указать, хотите ли вы все компоненты или наиболее значимые из них?
источник
Я полагаю, вам нужно всего несколько (или несколько сотен) доминантных пар единственное значение / вектор. Тогда лучше всего использовать итерационный метод, который будет намного быстрее и потреблять гораздо меньше памяти.
В Matlab смотрите
помогите свдс
источник
Вы можете проверить мой ответ на Cross Validated . Я не хотел копировать это здесь. По сути, вы можете использовать быстрый рандомизированный SVD для вычисления базисных коэффициентов и коэффициентов PCA.
источник
Вы можете попробовать алгоритм Fast PCA, который основан на итеративном способе вычисления нескольких собственных векторов. См. A.Sharma и KK Paliwal, Быстрый анализ главных компонентов с использованием анализа с фиксированной запятой, Letters Recognition Letters, 28, 1151-1155, 2007 .
источник