Потенциальное ускорение путем однократного применения PCA к набору данных с m строками по сравнению с IncrementalPCA до x пакетов размером m / x? - PullRequest
0 голосов
/ 14 февраля 2020

Я пытался уменьшить размерность больших многомерных наборов данных (с множеством строк и столбцов - около 100 000 - 1M строк и ~ 500 столбцов).

Хотя размер моего набора данных (m - это число строк, а n - количество столбцов) не препятствует применению PCA, PCA может потребоваться немало времени для обучения и преобразования данных.

Мне было интересно, будет ли разделение набора данных на x пакетов (каждый с одинаковыми размерами m / x строк) и затем частичное подгонка IncrementalPCA () к каждой из этих x серий, одна за другой, быстрее, чем попытка приспособить традиционный PCA () ко всему набору данных размером m строк?

Я считаю, что время выполнения PCA составляет O (m * n 2 ) + O (n 3 ), поэтому эффективно IncrementalPCA в этом случае просто делит внутренний фактор на m / x и умножает оба члена вне на x, что приводит к более высокой общей сложности времени и снижению производительности при общем x * O (m / x * n 2 ) + x * O (n 3 ) = O (m * n 2 ) + x * O (n 3 ). Таким образом, наивно кажется, что эта идея не сработает.

Однако, может ли кто-то предоставить более подробный анализ того, возможно ли такое ускорение с использованием мини-пакетов с IncrementalPCA? Я подозреваю, что мои рассуждения могут быть неполными.

Альтернативный подход, который я тоже опробовал, - это случайная стратифицированная выборка, которая кажется более стандартной, но я пытаюсь объединить различные оптимизации для достижения более быстрого времени выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...