是否有一种截断的SVD算法可以一次计算一个奇异值?
我的问题:我想计算一个大的密集矩阵M的前奇异值(和奇异矢量),但是我不知道k的合适值是多少。M很大,因此出于效率考虑,我宁愿不评估完整的SVD,而只是在之后截断最小的SV。
理想情况下,将计算的奇异值的方式顺序,从最大()到最小()。这样一来,我可以简单地停止计算计算后个奇异值,如果下降到低于某个阈值。
是否存在这样的算法(最好使用Python实现)?在谷歌搜索中,我只发现了以k为参数的截断SVD函数,因此迫使您先验猜测。
您的M是正方形还是矩形?如果是矩形,则需要长奇异矢量还是短奇异矢量?也就是说,如果M是m> n的(mxn),则要(mxk)还是(kxn)?
—
Max Hutchinson
M是矩形,行多于列。我想要短的奇异向量(即V,在M = U S V ^ T中)。
—
SuperElectric 2014年