【发布时间】:2012-11-05 17:32:18
【问题描述】:
我有大约 1000 个维度为 50000 的向量 x_i,但它们非常稀疏;每个只有大约 50-100 个非零元素。我想对这个数据集(在 MATLAB 中)进行 PCA 以减少数据不需要的极端维度。
不幸的是,由于需要从所有示例中减去均值,我不知道没有中间完整矩阵的任何方法。当然,一个 1000x50000 的矩阵太大而无法放入内存(当我尝试时,它实际上会因某种原因使我的整个计算机崩溃)。当我尝试使用 Matlab 内置的 princomp 时,它也会导致我的计算机崩溃。
所以我的问题是:有没有一种方法可以在不需要大量非稀疏矩阵作为中间步骤的情况下对这些数据进行 PCA?
【问题讨论】:
-
1000x50000x8 = 381MB。由于 MATLAB 需要矩阵的连续内存,这不足为奇。
-
您的计算机是崩溃还是只是 MATLAB?只是好奇
-
我的整台电脑,必须按前面的重置按钮。真的很奇怪……
-
您可以使用 windbg 找出究竟是什么导致计算机崩溃。去谷歌上查询。 :)
标签: matlab machine-learning pca sparse-matrix