Ich habe eine Matrix , die meine Abtastwerte im dimensionalen Raum enthält. Ich möchte jetzt meine eigene Hauptkomponentenanalyse (PCA) in Matlab codieren. Ich erniedrige zuerst zu .
Ich habe aus dem Code von jemandem gelesen, dass wir in solchen Szenarien, in denen wir mehr Dimensionen als Beobachtungen haben, die Kovarianzmatrix des nicht mehr selbst zerlegen . Stattdessen haben wir EIGEN zersetzende . Warum ist es richtig?
Die normale Kovarianzmatrix hat die Größe , wobei jedes Element die Kovarianz zwischen zwei Dimensionen angibt. Für mich hat nicht einmal die richtigen Abmessungen! Es ist eine Matrix, also was würde es uns sagen? Kovarianz zwischen zwei Beobachtungen?!
X'X
undXX'
(sowie über SVD vonX
undX'
) erhalten werden. Was in einem Fall als "Ladungen" bezeichnet wird, wird im anderen Fall als "PC-Scores" bezeichnet und umgekehrt. Da beide nur Koordinaten ( siehe zum Beispiel ) und die Achsen sind, sind die "Hauptabmessungen" gleich.n<p
es weniger RAM und weniger Zeit zum Zerlegen benötigt,XX'
da es kleiner ist.XX'
zum PC zu wechseln. Könnten Sie mir bitte ganz kurz zeigen, wie? Da PCs nur Eigenvektoren der Kovarianzmatrix sind, habe ich versucht, von EigenXX'
zu Eigen der Kovarianzmatrix zu wechseln, binX'X
jedoch gescheitert.Antworten:
Die Kovarianzmatrix hat die Größe und ist gegeben durchD×D
Die Matrix, über die Sie sprechen, ist natürlich keine Kovarianzmatrix. Es heißt Gram-Matrix und hat die Größe :N×N
Die Hauptkomponentenanalyse (PCA) kann durch Eigenzerlegung einer dieser Matrizen implementiert werden. Dies sind nur zwei verschiedene Methoden, um dasselbe zu berechnen.
Der einfachste und nützlichste Weg, dies zu sehen, ist die Verwendung der Singularwertzerlegung der Datenmatrix . Wenn wir dies in die Ausdrücke für und , erhalten wir:X=USV⊤ C G
Eigenvektoren der Kovarianzmatrix sind Hauptrichtungen. Projektionen der Daten auf diese Eigenvektoren sind Hauptkomponenten; Diese Projektionen werden von . Auf Längeneinheit skalierte Hauptkomponenten sind durch . Wie Sie sehen, sind Eigenvektoren der Gram-Matrix genau diese skalierten Hauptkomponenten. Und die Eigenwerte von und stimmen überein.V US U C G
Der Grund, warum es möglicherweise empfohlen wird , die Gram-Matrix zu verwenden, wenn ist, liegt darin, dass sie im Vergleich zur Kovarianzmatrix kleiner ist und daher schneller zu berechnen und schneller selbst zu zerlegen ist. Wenn Ihre Dimensionalität zu hoch ist, können Sie die Kovarianzmatrix nicht einmal im Speicher speichern. Daher ist die Verwendung einer Gram-Matrix die einzige Möglichkeit, PCA durchzuführen. Aber für verwaltbares Sie immer noch die Eigendekomposition der Kovarianzmatrix verwenden, wenn Sie es vorziehen, auch wenn .N<D D D N<D
quelle