大规模的 PCA 甚至可能吗?

机器算法验证 主成分分析 算法 降维 大数据
2022-03-25 04:44:41

主成分分析(PCA)的经典方法是在输入数据矩阵上进行,其中列的均值为零(然后 PCA 可以“最大化方差”)。这可以通过使列居中来轻松实现。但是,当输入矩阵稀疏时,中心矩阵现在将不再稀疏,并且 - 如果矩阵非常大 - 将不再适合内存。存储问题有算法解决方案吗?

1个回答

是的,有可能。

如果数据矩阵不适合 RAM,这还不是世界末日:有有效的算法可以处理存储在硬盘上的数据。参见 Halko et al., 2010, An algorithm for the principal component analysis of large data sets中描述的随机 PCA 。

在第 6.2 节中,作者提到他们在 400k 乘以 100k 数据矩阵上尝试了他们的算法,并且

本论文的算法需要 12.3 小时来处理存储在磁盘上的所有 150 GB 数据集,使用具有 1.5 GB RAM 的笔记本电脑 [...]。

请注意,这是在磁性硬盘驱动器的旧时代。今天有更快的固态驱动器可用,所以我猜同样的算法会执行得更快。

另请参阅此旧线程以获取有关随机 PCA 的更多讨论:Best PCA algorithm for huge number of features (>10K)? 以及 Halko 等人在 2011 年发表的这篇大型评论:Finding Structure with Randomness: Probabilistic Algorithms for Constructing Approximate Matrix Decompositions