SVDいろいろ
SVDについて色々調べてみた。
普通のSVDじゃ、大量のデータを扱いのはきついなぁと思って
大量のデータの扱い方を中心に調べてみた。
SparseSVDとか、ヘブ則を使ったSVDとか
Netflixで有名になったSimonさんが作ったSVDとか。
Pythonで実装されているものだったら、
1.「ヘブ則とSimonさんのSVD」
http://d.hatena.ne.jp/ytakano/20081012
2.「SparseSVD、インクリメンタルSVD」
http://mac.softpedia.com/get/Development/Libraries/Divisi.shtml
あたり。
上の方が早いかと思ったのだが、扱っているタスクが疎なものであれば
SparseSVDの方が早そう。(上のブログはほぼPurePythonなので遅いのかも)
自分のPC(ノート)で実行して見たところ
パラメータの設定の仕方にもよるがデフォルトだと実効速度が
ScipyのSVD>2のパッケージ>>>>1
ただ、パラメータを色々変えると
2のパッケージで1000*1000の行列(Non zero:Zero=25%:75%)で
1.5秒くらい。
ノートPCじゃなければという速度かと。