2011-07-25 94 views
7

我只是想知道是否有人知道大型稀疏矩陣的奇異值分解(SVD)的Java實現?我需要執行潛在語義分析(LSA)。大型稀疏矩陣的奇異值分解的Java實現

我嘗試過來自UJMP和JAMA的軟件包,但是當行數> = 1000和col> = 500時,它們會窒息。如果任何人都可以指向我的psuedocode或其他東西,那將不勝感激。

+2

幾乎相同的[另一個問題](http://stackoverflow.com/questions/1750463/singular-value-decomposition-implementation)中的答案是嘗試[Colt](http://acs.lbl .GOV /〜hoschek /小馬/)。 –

+0

好吧,Colt和JAMA中類SingularValueDecomposition的代碼幾乎完全相同。此外,代碼僅適用於m> n(行數大於列數)的情況。另外,我認爲算法沒有針對稀疏矩陣進行優化。 – jake

+0

m> n條件並不真的打擾我。實際上,對於我來說,99.99%的時間m> n總是如此(行代表單詞和列代表文檔)。只是這個約束沒有明確記錄。 – jake

回答

3

有一個list of Java numerical libraries at Wikipedia。 NIST圖書館很不錯,不幸的是它沒有處理稀疏矩陣。我對其他軟件包不太熟悉。你可以看看Colt;它的質量也很高,並且在某些操作中處理稀疏矩陣;我不知道SVD,但我想象它。我也聽說UJMP也值得一看。

編輯:很抱歉聽說UJMP不處理您的問題。我聽說這值得一看。

+0

謝謝。該名單幫助。如果有人感興趣,apache commons數學包確實有SVD實現。它僅迭代30次,並引發異常。對代碼進行更深入的研究,並不清楚如何增加它(因爲類中的類內有類)。 – jake