大型稀疏矩阵的动态/无矩阵 SVD

计算科学 线性代数 matlab 矩阵 稀疏矩阵 svd
2021-12-23 11:19:45

我正在尝试将 SVD 应用于大型稀疏矩阵。我已经将Propackirlba的性能与 matlabsvdsvds. 这两个包显着增加了计算时间,但我仍然必须处理内存问题。因此,我正在寻找一种免费的矩阵 SVD 算法,它允许我即时计算 M 个最大奇异值,而无需在 SVD 的入口处计算整个矩阵。我阅读了有关增量 SVD http://www.math.fsu.edu/~cbaker/IncPACK/的信息 ,还看到这个主题提到使用 Lanczos 通过 FFT 进行快速块矩阵向量乘法,而不是 大块汉克尔矩阵的 SVD SVD 但由于我不是专家,我仍然看不到一种简单的方法来计算 SVD,而无需承担计算整个矩阵的内存成本。有人可以帮我找出来吗?

1个回答

如果您想计算截断(最好是低秩)SVD,增量 SVD 方法只会对您有所帮助。这些算法的内存要求或多或少是存储大型稀疏矩阵的单列加上当前截断的 SVD 的能力。如果您尝试使用增量方法计算整个 SVD,您将不会节省那么多内存;但是,如果您只计算左奇异向量和奇异值,那么如果您的矩阵的列多于行,则可以想象节省内存。