各サンプルが約 10,000 の特徴を表示する、約 40,000 のサンプルで構成されるデータセットで主成分分析を実行したいと考えています。
Matlab の princomp 関数を使用すると時間がかかります...最速のアルゴリズムは何でしょうか? i7 デュアルコア / 4GB RAM の場合、どのくらいの時間がかかりますか?
ご協力ありがとうございました
各サンプルが約 10,000 の特徴を表示する、約 40,000 のサンプルで構成されるデータセットで主成分分析を実行したいと考えています。
Matlab の princomp 関数を使用すると時間がかかります...最速のアルゴリズムは何でしょうか? i7 デュアルコア / 4GB RAM の場合、どのくらいの時間がかかりますか?
ご協力ありがとうございました
最近、これに関する良い研究がいくつかあります。新しいアプローチでは、行列を数回読み取るだけで最大の固有値で高い精度が得られる「ランダム化アルゴリズム」が使用されます。これは、高精度に到達するために数回の行列とベクトルの乗算を必要とするベキ反復とは対照的です。
新しい研究の詳細については、こちらをご覧ください。
http://math.berkeley.edu/~strain/273.F10/martinsson.tygert.rokhlin.randomized.decomposition.pdf
http://arxiv.org/abs/0909.4061
このコードはあなたのためにそれを行います:
http://cims.nyu.edu/~tygert/software.html
https://bitbucket.org/rcompton/pca_hgdp/raw/be45a1d9a7077b60219f7017af0130c7f43d7b52/pca.m
http://code.google.com/p/redsvd/
https://cwiki.apache.org/MAHOUT/stochastic-singular-value-decomposition.html
選択した言語がそこにない場合は、独自のランダム化された SVD を簡単に作成できます。行列ベクトルの乗算とそれに続く市販の SVD の呼び出しのみが必要です。