Pca
大規模的 PCA 甚至可能嗎?
主成分分析(PCA)的經典方法是在輸入數據矩陣上進行,其中列的均值為零(然後 PCA 可以“最大化方差”)。這可以通過使列居中來輕鬆實現。然而,當輸入矩陣稀疏時,中心矩陣現在將不再稀疏,並且 - 如果矩陣非常大 - 將不再適合內存。存儲問題有算法解決方案嗎?
對的,這是可能的。
如果數據矩陣不適合 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。