2016-04-23 24 views
2

'arpack'を使用する場合、分散比が約0.5(n_iter = 10)の の場合は、ランダム化されたものを使用した場合、30000×40000のサイズの文書 - 行列を使用して3000次元に次元を縮小すると使用されました( )約0.9なぜscikit-learn truncatedSVDはデフォルトで「ランダム化」アルゴリズムを使用していますか?

'ランダム化された'アルゴリズムの分散比は 'arpack'のいずれよりも低くなっています。

なぜ、scikit-learn truncatedSVDはデフォルトで「ランダム化」アルゴリズムを使用するのですか?

答えて

1

スピード!

docsによれば、sklearn.decomposition.TruncatedSVDは、Halko, Martinson, and Tropp (2009).のランダムアルゴリズムを使用できます。この論文では、アルゴリズムがかなり高速であると主張しています。

古典的なアルゴリズムはO(m * n * k)時間を要するのに対して、それはO(m * n * log(k))時間で実行されます。そこからk番目に大きいコンポーネントが必要です。ランダム化されたアルゴリズムは、効率的に並列化することも容易であり、データの通過回数を減らすことができます。

表7は、マトリックスサイズとコンポーネント数の関数としてのいくつかのアルゴリズムのパフォーマンスを示しています。ランダム化されたアルゴリズムは、しばしば1桁高速です。

出力の精度もかなり良いと主張されていますが(図7.5)、それに影響を与えるいくつかの修正や定数がありますが、Sklearnコードを見ていない行う。

関連する問題