次元 50000 の約 1000 個のベクトル x_i がありますが、それらは非常にまばらです。それぞれに約 50 ~ 100 個の非ゼロ要素しかありません。このデータセット (MATLAB) で PCA を実行して、データの不要な極端な次元を削減したいと考えています。
残念ながら、すべての例から平均を差し引く必要があるため、中間の完全な行列なしでこれを行う方法はわかりません。そしてもちろん、1000x50000 のマトリックスは大きすぎてメモリに収まりません (試してみると、何らかの理由でコンピューター全体が実際にクラッシュします)。Matlab のビルトインprincomp
も、使用しようとするとコンピューターがクラッシュします。
私の質問は次のとおりです。中間ステップとして大規模な非疎行列を必要とせずに、このデータに対して PCA を実行する方法はありますか?