我正在寻找一个快速的 svd 库,无论是 c、c++ 还是 java。最终我使用的是 Java,但我很喜欢使用 jna 来包装 c++,例如http://github.com/hughperkins/jeigen
我正在寻找一个可以处理稀疏矩阵的快速 svd 库。为了保持这个客观性,这样问题就不会被标记为过于主观,让我们说:
- 与 news20.binary 一起使用,例如来自http://mldata.org/repository/data/viewslug/news20binary/
- 运行需要多快?
- 保留多少方差,例如对于大小为 6 或 20 的 S 矩阵?
我环顾了几个图书馆,发现:
- matlab:超级快,大约 10 秒,但它并不是真正的“库”。平均平方投影误差:0.93
- redsvd:超快,运行1秒左右,6个特征,但平均平方投影误差为0.97,非常高
- Eigen 的 svd 都非常慢,并且仅适用于密集矩阵
- svdlibc:在我停止之前运行了 28 分钟;我想它是在计算完整的 S,而不仅仅是前 6 个特征左右
基本上,我正在寻找一个库,它提供与 matlab 相同的速度和平均平方投影误差,或者至少具有可比性。