高次元データ用の最速のPCAアルゴリズム


11

約40 000個のサンプルで構成されるデータセットに対してPCAを実行します。各サンプルには約10,000個の特徴が表示されます。

Matlab princomp関数を使用すると、一貫して30分以上かかり、その時点でプロセスを強制終了します。10分以内に実行される実装/アルゴリズムを見つけたいです。最速のアルゴリズムは何でしょうか?i7デュアルコア/ 4GB RAMにかかる時間はどれくらいですか?


はい、あなたは正しいです、私はより正確でなければなりません。30分以上かかるので、プロセスを強制終了することにしました。私は少なくとも10回これを行う必要があり、10分未満で作品があることに何か持っていいだろうか
まろやか

マトリックスはどの程度疎ですか?
アーノルドノイマイアー

マトリックス内のゼロの割合が80%を超えている
メロー

kernal-PCAもチェックしてください。
meawoppl

回答:


11

まず、すべてのコンポーネントが必要か、最も重要なコンポーネントが必要かを指定する必要がありますか?

ARN×MNM

CRM×MO(NM2)O(M3)O(2M2)1.5A

AA

C


2

少数(または数百)の支配的な特異値/ベクトルのペアのみが必要だと思います。次に、反復メソッドを使用するのが最適です。反復メソッドは、はるかに高速で、はるかに少ないメモリを消費します。

Matlabでは、

svdsを助ける


はい、最初の100個のコンポーネントのみが必要な場合、反復法ははるかに高速であるようです。
メロウ

svdsに関しては、マトリックスをスパース形式にし、princomp関数を変更してsvdの代わりにsvdsを配置しようとしましたが、驚いたことに、2000 * 4000マトリックス(15秒ではなく180秒) )。奇妙
な...-メロー

1
スパース形式に切り替える必要はありません。また、計算する特異ベクトルの数を減らす必要があります。単純なsvdを計算するには、svdsは適切ではありません。
アーノルドノイマイアー



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.