Wie erhält man "Eigenwerte" (Prozentsätze der erklärten Varianz) von Vektoren, die keine PCA-Eigenvektoren sind?

10

Ich möchte verstehen, wie ich den Prozentsatz der Varianz eines Datensatzes nicht in dem von PCA bereitgestellten Koordinatenraum, sondern gegen einen etwas anderen Satz von (gedrehten) Vektoren erhalten kann.

Geben Sie hier die Bildbeschreibung ein

set.seed(1234)
xx <- rnorm(1000)
yy <- xx * 0.5 + rnorm(1000, sd = 0.6)
vecs <- cbind(xx, yy)
plot(vecs, xlim = c(-4, 4), ylim = c(-4, 4))
vv <- eigen(cov(vecs))$vectors
ee <- eigen(cov(vecs))$values
a1 <- vv[, 1]
a2 <- vv[, 2]
theta = pi/10
rotmat <- matrix(c(cos(theta), sin(theta), -sin(theta), cos(theta)), 2, 2)
a1r <- a1 %*% rotmat
a2r <- a2 %*% rotmat
arrows(0, 0, a1[1], a1[2], lwd = 2, col = "red")
arrows(0, 0, a2[1], a2[2], lwd = 2, col = "red")
arrows(0, 0, a1r[1], a1r[2], lwd = 2, col = "green3")
arrows(0, 0, a2r[1], a2r[2], lwd = 2, col = "green3")
legend("topleft", legend = c("eigenvectors", "rotated"), fill = c("red", "green3"))

Grundsätzlich weiß ich also, dass die von PCA gegebene Varianz des Datensatzes entlang jeder der roten Achsen durch die Eigenwerte dargestellt wird. Aber wie könnte ich die äquivalenten Varianzen erhalten, die den gleichen Betrag summieren, aber die zwei verschiedenen Achsen in Grün projizieren , die eine Drehung um pi / 10 der Hauptkomponentenachsen sind. Wenn ich zwei orthogonale Einheitsvektoren vom Ursprung gegeben habe, wie kann ich die Varianz eines Datensatzes entlang jeder dieser willkürlichen (aber orthogonalen) Achsen erhalten, so dass die gesamte Varianz berücksichtigt wird (dh die Summe der "Eigenwerte" entspricht der von PCA).

Thomas Browne
quelle
Sehr verwandt: stats.stackexchange.com/questions/8630 .
Amöbe sagt Reinstate Monica

Antworten:

7

Wenn die Vektoren orthogonal sind, können Sie einfach die Varianz der skalaren Projektion der Daten auf jeden Vektor nehmen. Angenommen, wir haben eine Datenmatrix ( Punkte x Dimensionen) und einen Satz orthonormaler Spaltenvektoren . Angenommen, die Daten sind zentriert. Die Varianz der Daten entlang der Richtung jedes Vektors ist durch .n d { v 1 , . . . , v k } v i Var ( X v i )Xnd{v1,...,vk}viVar(Xvi)

Wenn es so viele Vektoren wie die ursprünglichen Dimensionen gibt ( ), entspricht die Summe der Varianzen der Projektionen der Summe der Varianzen entlang der ursprünglichen Dimensionen. Wenn jedoch weniger Vektoren als die ursprünglichen Dimensionen vorhanden sind ( ), ist die Summe der Varianzen im Allgemeinen geringer als bei PCA. Eine Möglichkeit, sich PCA vorzustellen, besteht darin, genau diese Größe zu maximieren (unter der Bedingung, dass die Vektoren orthogonal sind).k < dk=dk<d

Möglicherweise möchten Sie auch (den erklärten Varianzanteil) berechnen , der häufig verwendet wird, um zu messen, wie gut eine bestimmte Anzahl von PCA-Dimensionen die Daten darstellt. Es sei die Summe der Varianzen entlang jeder ursprünglichen Dimension der Daten. Dann: S.R2S

R2=1Si=1kVar(Xvi)

Dies ist nur das Verhältnis der summierten Varianzen der Projektionen und der summierten Varianzen entlang der ursprünglichen Dimensionen.

Eine andere Möglichkeit, über nachzudenken , besteht darin, die Anpassungsgüte zu messen, wenn wir versuchen, die Daten aus den Projektionen zu rekonstruieren. Es nimmt dann die bekannte Form an, die für andere Modelle verwendet wird (z. B. Regression). Angenommen, der te Datenpunkt ist ein Zeilenvektor . Speichern von jeder der Basisvektoren entlang der Spalten der Matrix . Die Projektion des - ten Datenpunktes auf alle Vektoren in ist gegeben durch . Wenn es weniger Vektoren als die ursprünglichen Dimensionen gibt ( i x ( i ) V i V p ( i ) = x ( i ) V k < d x ( i ) = p ( i ) V TR2ix(i)ViVp(i)=x(i)Vk<d) können wir uns dies als lineare Abbildung der Daten in einen Raum mit reduzierter Dimensionalität vorstellen. Wir können etwa den Datenpunkt von der niedrigen dimensionalen Darstellung durch Mapping wieder in den ursprünglichen Datenraum rekonstruieren: . Der mittlere quadratische Rekonstruktionsfehler ist der mittlere quadratische euklidische Abstand zwischen jedem ursprünglichen Datenpunkt und seiner Rekonstruktion:x^(i)=p(i)VT

E=1nx(i)x^(i)2

Die Güte der Anpassung wird auf die gleiche Weise wie bei anderen Modellen definiert (dh als eins minus dem Bruchteil der ungeklärten Varianz). Angesichts des mittleren quadratischen Fehlers des Modells ( ) und der Gesamtvarianz der modellierten Menge ( ) ist . Im Kontext unserer Datenrekonstruktion ist der mittlere quadratische Fehler (der Rekonstruktionsfehler). Die Gesamtvarianz ist (die Summe der Varianzen entlang jeder Dimension der Daten). Damit:R2MSEVartotalR2=1MSE/VartotalES

R2=1ES

S ist auch gleich dem mittleren quadratischen euklidischen Abstand von jedem Datenpunkt zum Mittelwert aller Datenpunkte, so dass wir uns als Vergleich des Rekonstruktionsfehlers mit dem des 'Worst-Case-Modells' vorstellen können, das immer das zurückgibt meine wie die Rekonstruktion.R2

Die beiden Ausdrücke für sind äquivalent. Wie oben ist eins , wenn es so viele Vektoren wie die ursprünglichen Dimensionen gibt ( ) . Wenn jedoch , ist im Allgemeinen kleiner als für PCA. Eine andere Möglichkeit, über PCA nachzudenken, besteht darin, den quadratischen Rekonstruktionsfehler zu minimieren.R2k=dR2k<dR2

user20160
quelle
+1, sehr klare Erklärung. Der Vollständigkeit halber möchte ich nur erwähnen, dass ist, was Sie geschrieben haben, nur wenn wir unter " " die Rekonstruktion über dasselbe verstehen , das für die Projektion verwendet wurde. Im Allgemeinen gibt es für einen beliebigen Projektionsvektor eine bessere Rekonstruktion, die ein höheres ergibt . Ich habe eine Antwort, in der ich sie ausführlich erkläre . Ich stimme jedoch zu, dass für diese spezielle Frage genau das, was Sie geschrieben haben, benötigt wird. R2try[ing] to reconstruct the data from the projectionsVvR2
Amöbe sagt Reinstate Monica
Ja, das ist ein guter Punkt und eine nette Erklärung
user20160
Was ist, wenn ich keine Datenmatrix habe, sondern nur eine Kovarianzmatrix? Die Summe der Diagonale der Kovarianzmatrix gibt mir die Gesamtvarianz, und wenn ich PCA auf diese Kovarianzmatrix anwenden würde, würden die Eigenwerte die Varianz entlang jeder neuen Richtung angeben, so dass die erklärte Varianz der Eigenwert / die Gesamtvarianz ist. Aber was ist, dass meine Vektoren keine Eigenvektoren sind?
Verwirrt
... Soweit ich das beurteilen kann, muss man in diesem Fall | Cv_i | nehmen , wenn wir mit einer Kovarianzmatrix C beginnen / sum (diag ( C )), um die prozentuale Varianz zu erklären.
Verwirrt