我想为大小最大为 1000000 x 1000000(不一定是正方形)的稀疏矩阵计算广义奇异值分解。该方法将用于机器学习(分类)。
目前,我正在使用LAPACK包中的函数ggsvd (这里),这是一个Fortran实现。
它的作用是计算给定矩阵 A 和 B 的矩阵 U、V、X、C、S,使得
A = U * C * transposed(X)
B = V * S * transposed(X)
其中 C 和 S 是分别包含 A 和 B 奇异值的对角矩阵。(来自 Matlab 的解释)
使用 SVD 可以进行低秩逼近,这意味着只计算具有最多信息的 r 个最大奇异值来逼近输入矩阵。
我现在想知道在 GSVD 中是否也可以这样做,这样就不必计算所有奇异值。我想只计算 r 最大值或在值低于给定阈值时停止计算。
我的假设是这是不可能的,因为 A 和 B 的奇异值是成对计算的,如果一对包含 A 的最大奇异值,则其 B 的配对不一定是。
一个简短的解释为什么它是可能的(也许是一个提供这个选项的实现的链接)或者不是很好。