大规模PCA甚至可能吗?


10

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


5
即使完整的数据矩阵不适合内存,也很可能是协方差或Gram矩阵适合内存。这些足以执行PCA。您正在考虑输入数据矩阵的大小是多少?另请参阅stats.stackexchange.com/questions/35185
变形虫

1
@amoeba:我正在查看500K样本(行)和300K特征(列)
Roy

关于软件,Apache Spark的文件spark.apache.org/docs/latest/…,以确保实现处理内存不足的数据
Tim

Answers:


11

是的,有可能。

如果数据矩阵不适合RAM,那么这还不是世界末日:有高效的算法可以处理存储在硬盘上的数据。参见例如Halko等人,2010,大型数据集主成分分析算法中所述的随机PCA 。

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

使用具有1.5 GB RAM的便携式计算机,本论文的算法需要12.3个小时来处理存储在磁盘上的所有150 GB该数据集。

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

另请参见此旧主题以获取有关随机PCA的更多讨论:具有大量功能(> 10K)的最佳PCA算法?以及Halko等人在2011年发表的大型评论:发现具有随机性的结构:用于构造近似矩阵分解的概率算法

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.