我知道R中有包可以有效地存储稀疏矩阵。还有一种方法可以有效地存储低秩矩阵吗?例如:
A <- matrix(rnorm(1e6), nrow=1e5, ncol=1e1)
B <- A %*% t(A)
现在,B
太大而无法存储在内存中,但排名较低。是否有任何方法以有效的方式构造和存储B
,以便一些基本的读取方法(rowSums
,colSums
等)即时执行,以便进行交易cpu还是内存?
答案 0 :(得分:2)
您的问题已经是答案:要有效地存储这样的低秩矩阵,您需要创建包含这两个因子的数据结构。如果需要矩阵向量乘法,可以使用因子的矩阵向量乘法从右到左完成。
这种策略和数据结构的一个应用可以在有限存储器Broyden或BFGS准牛顿方法的实现中找到。
答案 1 :(得分:0)