Svd

如何計算巨大稀疏矩陣的 SVD?

  • October 26, 2012

計算數據極其稀疏的非常大的正矩陣(65M x 3.4M)的奇異值分解(SVD)的最佳方法是什麼?

少於 0.1% 的矩陣是非零的。我需要一種方法:

  • 將適合記憶(我知道存在在線方法)
  • 將在合理的時間內計算:3,4 天
  • 將足夠準確,但準確性不是我主要關心的問題,我希望能夠控制我投入多少資源。

擁有一個實現它的 Haskell、Python、C# 等庫會很棒。我沒有使用 mathlab 或 R,但如有必要,我可以使用 R。

如果它適合內存,請使用Matrix 包在 R 中構造一個稀疏矩陣,並嘗試irlba用於 SVD。您可以指定結果中需要多少個奇異向量,這是限制計算的另一種方法。

這是一個相當大的矩陣,但過去我用這種方法取得了非常好的結果。 irlba是相當先進的。它使用隱式重啟的 Lanczos 雙對角化算法

它可以在幾毫秒內瀏覽 netflix 獎品數據集(480,189 行 x 17,770 列,100,480,507 個非零條目)。你的數據集比 Netflix 數據集大約 200,000 倍,所以它需要的時間要長得多。期望它可以在幾天內完成計算可能是合理的。

引用自:https://stats.stackexchange.com/questions/41259

comments powered by Disqus