2011年2月1日火曜日

SVD(特異値分解)計算ライブラリ

今回、別件の情報をサーベイしている中で、こちらのページ(Netflix Prize 外野席)から、SVD (singular value decomposition:特異値分解)の高速アルゴリズムであるSimon Funkのアルゴリズムを見つけました。
関連する課題も抱えていたので、これ幸いと読んでみました。しかし、プログラムコードとしては公開されておらず、ページ内の解説を理解しようとしても、少し大変な様子なので、Google先生のお世話になりながら関連情報を検索しまくりました。

そして、「redsvd」にたどり着きました。(Simonとは別の手法による実装です)

ここ数年の研究で、高速に近似的な解を求める方法の研究が進んできているようです。

説明を見る限りでは高速に計算できているようです。
近年注目を集めている乱択化アルゴリズム用いているとのこと。

これまでの実装によるSVDモジュールでは、大規模な問題を解こうとすると、どうしても越えられない壁があったのですが、これで解決につながるかもしれません。
修正BSDライセンスというのも助かります。

こういう、実用的なモジュールがフリーで公開してもらえると、本質的なところに注力することができて非常に有益です。

次のページに他のライブラリなどもまとめました
 → 特異値分解(SVD)参考リンク集