PCAは、次元数が観測数よりも大きい場合でも、共分散行列の固有分解を介して行われますか?


10

私は行列Xを私含む、N = 20でサンプルをD = 100次元空間。次に、Matlabで自分の主成分分析(PCA)をコード化したいと思います。最初にXからX 0を降格します。20×100XN=20D=100XX0

観測よりも次元が多いシナリオでは、の共分散行列をもはや固有分解しないという誰かのコードを読みました。代わりに、固有分解します1X0。なぜそれが正しいのですか?1N1X0X0T

通常の共分散行列のサイズは、その各要素は2次元間の共分散を示します。私にとって、1D×Dは正しい寸法ではありません!これはN×N行列なので、何を教えてくれるでしょうか。2つの観測間の共分散?!1N1X0X0TN×N


あなたの質問への答えは、あなたのタスクのポーズから続くように、あなた自身のために列の共分散行列を必要としない状況にあります。PCを入手するためのパスとしてのみ必要でした。正しい?しかし、同じPCAの結果は、固有のを経由して得ることができるX'XXX'(同様のSVD XX')。ある場合には「ローディング」と呼ばれるものは、別の場合には「PCスコア」と呼ばれ、その逆も同様です。どちらも単なる座標(たとえばを参照)と軸なので、「主要な次元」は同じです。
ttnphns 2015

1
(続き)もしそうなら、あなたは分解するものを自由に選択できます-それはより速く/より効率的に行うことであるものを分解するのが賢明です。ときにn<pそれが分解するより少ないRAMとあまり時間がかかりXX'、それは小さいサイズであるため。
ttnphns 2015

@ttnphns素晴らしい説明。私は今そのポイントを理解しています。しかし、私はまだ固有からXX'PCに行く問題を抱えています。簡単に教えてください。PCは共分散行列の固有ベクトルだけであることを考えると、私はの固有値から移動しようとしたXX'共分散行列の固有値にX'X、しかし失敗しました。
Sibbsギャンブル2015

1
私が行かなければならない。おそらく、@ amoeba(私よりも代数の方がはるかに俊敏です)または別の読者がすぐにここを調べて、あなたを助けるでしょう。乾杯。
ttnphns 2015

1
@ttnphns:完了:)
amoebaは、

回答:


22

D×D

C=1N1X0X0.

N×N

G=1N1X0X0.

主成分分析(PCA)は、これらのマトリックスのいずれかの固有分解を介して実装できます。これらは、同じものを計算するための2つの異なる方法にすぎません。

X=USVCG

C=VS2N1VG=US2N1U.

VUSUCG

N<DDDN<D



1
正解です。名前なんて知らなかった!どうもありがとう!これを使用して計算を高速化できると確信しています。
Sibbsギャンブル2015

3
US/(n1)VUXU

この答えは、私が本で見た多くの博覧会であることは明らかです。ありがとう。
usεr11852

純粋に参照目的のため:IJグッドの1969年のテクノメトリクスペーパー「マトリックスの特異分解のいくつかのアプリケーション」は、これを完全に最初に参照した最初の1つだと思います。
usεr11852

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