質問

に基づく この答え, 、観測が多すぎると共分散行列を段階的にビルドすることができるのに対し、変数が多すぎるとランダム化されたSVDを実行できることがわかっています。

回答が提供することは明確で役立ちます。しかし、大量の観察がある場合はどうなりますか 変数?たとえば、600,000の観測値を持つ500,000サンプル。この場合、共分散マトリックスは巨大になります(たとえば、2,000 GB、8Byteフロートを想定し、計算が正しい場合は正しい場合)。

このようなシナリオでは、PCAを計算するためにできることはありますか?トップPC(15個のPC)のみが必要なと仮定していますか?

役に立ちましたか?

解決

できることがいくつかあります。

  1. 代表者をサンプリングしますが、データの小さなセットをサンプリングします。これにより、メモリでPCAを計算できます。しかし、600,00の観察があるので、これは有意義な結果をもたらさないでしょう。
  2. インクリメンタルPCAを使用してください。ここにリンクがあります。 http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.incrementalpca.html#sklearn.decomposition.incrementalpca

しかし、あなたが抱えている主な問題は、多くのサンプルがあなたが持っている観測量よりも少ないということです。次元削減に別のアプローチをお勧めします。自動エンコーダーはあなたへの私の推薦です。自動エンコーダーは、反復的な方法でトレーニングし、メモリの問題を回避することができ、PCAよりも複雑な投影を学ぶことができます(これは線形変換です)。線形投影が必要な場合は、1つの隠れレイヤーを備えた自動エンコーダーを使用でき、ニューラルネットワークによって見つかったソリューションはPCAで見つかったソリューションに等しくなります。

ここにあなたが役立つと思われるいくつかのリンクがあります:

ライセンス: CC-BY-SA帰属
所属していません datascience.stackexchange
scroll top