Я пытался уменьшить размерность больших многомерных наборов данных (с множеством строк и столбцов - около 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? Я подозреваю, что мои рассуждения могут быть неполными.
Альтернативный подход, который я тоже опробовал, - это случайная стратифицированная выборка, которая кажется более стандартной, но я пытаюсь объединить различные оптимизации для достижения более быстрого времени выполнения.