【问题标题】:Optimizing rank computation for very large sparse matrices优化非常大的稀疏矩阵的秩计算
【发布时间】:2015-01-10 14:36:44
【问题描述】:

我有一个稀疏矩阵,例如

A =

   (1,1)        1
   (3,1)        1
   (1,2)        1
   (2,2)        1
   (1,3)        1
   (3,3)        1
   (4,3)        1
   (4,4)        1

A 的完整矩阵如下所示:

full(A) =

     1     1     1     0
     0     1     0     0
     1     0     1     0
     0     0     1     1

我想通过快速的方式找到矩阵A 的秩(因为我的矩阵可以扩展到 10000 x 20000)。我尝试通过两种方式做到这一点,但它给出了不同的结果

  1. 转换为全矩阵并使用查找秩

    rank(full(A)) = 3
    
  2. 使用 sprank 查找排名

    sprank(A) = 4
    

真正的答案必须是 3,这意味着使用第一种方式。然而,找到秩需要很长时间,尤其是大尺寸的矩阵。我知道第二种方式给出 4 的原因,因为 sprank 只告诉您矩阵的多少行/列有非零元素,而 rank 报告矩阵的实际排名,表示矩阵的多少行线性无关。 sprank(A) 是 4,但 rank(A) 只有 3,因为您可以将第三行写成其他行的线性组合,特别是 A(2,:) - A(1,:)

我的问题是如何以最低的时间消耗找到稀疏矩阵的秩

更新:我尝试使用某种方式。但是,它报告了更大的时间消耗

%% Create random matrix
 G = sparse(randi(2,1000,1000))-1;
 A=sparse(G) %% Because my input matrix is sparse matrix
 %% Measure performance
>> tic; rank(full(A)); toc
Elapsed time is 0.710750 seconds.
>> tic; svds(A); toc
Elapsed time is 1.130674 seconds.
>> tic; eigs(A); toc
Warning: Only 3 of the 6 requested eigenvalues converged. 
> In eigs>processEUPDinfo at 1472
  In eigs at 365
Elapsed time is 4.894653 seconds.

【问题讨论】:

  • 您是否尝试过使用eigs 查找非零特征值的数量?
  • 先生,这需要很长时间。
  • svds(A) 工作得更快吗?排名将是结果中非零的数量(最多允许出现数字错误)
  • 我报告了比排名函数更大的计算时间
  • sprank 是 Matlab 提供的快速默认方法,但给出的答案不正确。您可能可以就这个主题写一篇完整的论文。优化非常大的稀疏矩阵的秩计算?您的问题可能更适合数学交流 (math.stackexchange.com)。这可能会有所帮助:ljk.imag.fr/membres/Jean-Guillaume.Dumas/Publications/…

标签: performance algorithm matlab matrix


【解决方案1】:

我不知道哪种算法最适合您,我同意在 math.stackexchange.com 上询问可能更合适。当我尝试使用您提供的随机矩阵 G = sparse(randi(2,1000,1000))-1; 时,我注意到它的秩小于 1000 的可能性很小,无论您使用什么算法,它的性能很可能非常依赖于数据。例如,在 2000 个样本的秩(分别)[198,325,503,1026,2000] 方阵上使用 eigs(G) 会产生以下性能(以秒为单位): [0.64,0.90,1.38,1.57,4.00] 显示性能eigs 函数的值与矩阵的秩密切相关。

我还搜索了现有工具并尝试了spnrank,我认为它不太依赖数据(它的性能比 eigs 高排名更好,如果排名小则更差)。

最后,您可能希望根据您最有可能使用的矩阵类型来调整您的技术解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2018-05-12
    • 2021-05-09
    • 2011-03-11
    • 2016-11-22
    相关资源
    最近更新 更多