我在R中有一个稀疏的Matrix
,它对我来说运行as.matrix()
显然太大了(尽管它也不是超级巨大的)。有问题的as.matrix()
调用在svd()
函数中,所以我想知道是否有人知道不需要先转换为密集矩阵的SVD的不同实现。用于R中稀疏矩阵的SVD
回答
的irlba包具有非常快的SVD实现稀疏矩阵。
这就是我最终做的。这是比较简单的编写转储稀疏矩阵(类dgCMatrix
)在SVDLIBC的“疏文本”格式的文本文件的程序,然后调用svd
可执行文件,并阅读这三个结果的文本文件放回R.
的赶上它是相当低效的 - 我需要大约10秒才能读取&写入文件,但实际的SVD计算仅需要大约0.2秒左右。尽管如此,这当然比不能完成计算要好得多,所以我很高兴。 =)
后续问题张贴在http://stackoverflow.com/questions/5009026/extract-long-from-r-object。 – 2011-02-15 21:11:45
在不提供任何示例数据或解决方案代码的情况下给自己一个复选标记似乎与SO的原理相悖。 – 2012-09-29 15:29:49
可以使用随机投影做稀疏SVD的非常可观的位中的R为在http://arxiv.org/abs/0909.4061
这里描述是一些示例代码:
# computes first k singular values of A with corresponding singular vectors
incore_stoch_svd = function(A, k) {
p = 10 # may need a larger value here
n = dim(A)[1]
m = dim(A)[2]
# random projection of A
Y = (A %*% matrix(rnorm((k+p) * m), ncol=k+p))
# the left part of the decomposition works for A (approximately)
Q = qr.Q(qr(Y))
# taking that off gives us something small to decompose
B = t(Q) %*% A
# decomposing B gives us singular values and right vectors for A
s = svd(B)
U = Q %*% s$u
# and then we can put it all together for a complete result
return (list(u=U, v=s$v, d=s$d))
}
rARPACK是您需要的软件包。像魅力一样工作,超快,因为它通过C和C++并行化。
- 1. python中的稀疏矩阵svd
- 2. R:在稀疏矩阵
- 3. R稀疏矩阵电源
- 4. R矩阵包:Demean稀疏矩阵
- 5. 稀疏矩阵
- 6. 子集的稀疏矩阵data.table R中
- 7. 类似于R矩阵库的Csharp稀疏矩阵库?
- 8. 稀疏矩阵和矩阵
- 9. 使用R创建稀疏矩阵
- 10. R heatmap稀疏多样的矩阵
- 11. 以稀疏矩阵
- 12. svd的一个非常大的稀疏矩阵
- 13. R - Logistic回归 - 稀疏矩阵
- 14. sklearn tsne用稀疏矩阵
- 15. 98%稀疏矩阵的矩阵完成
- 16. python稀疏矩阵的矩阵功率
- 17. 关于稀疏矩阵的Matlab问题
- 18. 关于CRS稀疏矩阵存储
- 19. scipy相当于numpy.prod()稀疏矩阵
- 20. 将稀疏矩阵转换为完整矩阵 - R
- 21. 反相稀疏矩阵
- 22. 点产品稀疏矩阵
- 23. 切片稀疏(scipy)矩阵
- 24. 多稀疏矩阵与SQL
- 25. matlab:稀疏矩阵分解
- 26. scipy稀疏矩阵分裂
- 27. 稀疏矩阵内存
- 28. 朱莉娅稀疏矩阵
- 29. 转身稀疏矩阵
- 30. 稀疏矩阵对齐
R找不到任何东西。C,Fortran,Python等有很多东西。 – 2011-02-09 22:38:42
也许我会试用SVDLIBC。它构建为一个C库,所以如果它运行良好,我将来可以将它作为一个模块来包装(尽管我的雄心可能不会持续那么久,如果历史是任何指导的话)。 – 2011-02-10 17:32:25
这个http://cran.r-project.org/web/packages/irlba/如何计算一个快速和有效的记忆方法来计算一些近似奇异值和大矩阵的奇异向量。 – 2012-02-23 08:29:31