【发布时间】:2013-03-02 05:03:54
【问题描述】:
我知道 R 中有一些包可以有效地存储稀疏矩阵。还有一种方法可以有效地存储低秩矩阵吗?例如:
A <- matrix(rnorm(1e6), nrow=1e5, ncol=1e1)
B <- A %*% t(A)
现在,B 太大而无法存储在内存中,但它的排名较低。有没有什么方法可以有效地构造和存储B,以便即时执行一些基本的读取方法(rowSums、colSums 等),以换取 CPU 或内存?
【问题讨论】:
-
有趣的问题 - 它有哪些应用程序? (低秩矩阵一般出现在哪里?)
-
@DavidRobinson:例如,在某些optimization algorithms 中,这些矩阵被用作大型密集矩阵的近似值(太大而无法计算,甚至无法存储)。
-
如果你愿意近似B,你能不能用低维近似,例如使用 SVD 并保留 SVD 的前 n 个维度?不确定这是否是您想要的,但可能值得考虑。
-
虽然它没有回答您的问题,但以下内容似乎有些相关:mathoverflow.net/questions/92328/low-rank-matrix-factorization
-
是的,我同意上述评论。考虑它,它会变得稀疏。