Jak uzyskać „wartości własne” (procent wyjaśnionej wariancji) wektorów, które nie są wektorami własnymi PCA?

10

Chciałbym zrozumieć, w jaki sposób mogę uzyskać procent wariancji zbioru danych, nie w przestrzeni współrzędnych zapewnionej przez PCA, ale w stosunku do nieco innego zestawu (obróconych) wektorów.

wprowadź opis zdjęcia tutaj

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"))

Tak więc w zasadzie wiem, że wariancja zestawu danych wzdłuż każdej z czerwonych osi, podana przez PCA, jest reprezentowana przez wartości własne. Ale jak mogłem uzyskać równoważne wariancje, w sumie tyle samo, ale rzutowałem dwie różne osie na zielono, które są obrotem o pi / 10 głównych osi składowych. IE biorąc pod uwagę dwa ortogonalne wektory jednostkowe od początku, jak mogę uzyskać wariancję zestawu danych wzdłuż każdej z tych dowolnych (ale ortogonalnych) osi, tak że cała wariancja jest uwzględniana (tj. „Wartości własne” sumują się do tego samego PCA).

Thomas Browne
źródło
Bardzo powiązane: stats.stackexchange.com/questions/8630 .
ameba

Odpowiedzi:

7

Xnd{v1,...,vk}viVar(Xvi)

k=dk<d

R2S

R2=1Si=1kVar(Xvi)

Jest to tylko stosunek sumowanych wariancji rzutów i sumowanych wariancji wzdłuż oryginalnych wymiarów.

R2ix(i)ViVp(i)=x(i)Vk<dx^(i)=p(i)VT

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

Dobroć dopasowania definiuje się tak samo, jak w przypadku innych modeli (tj. Jako jeden minus ułamek niewyjaśnionej wariancji). Biorąc pod uwagę średni błąd kwadratu modelu ( ) i całkowitą wariancję modelowanej ilości ( ), . W kontekście naszej rekonstrukcji danych średni błąd kwadratu wynosi (błąd rekonstrukcji). Całkowita wariancja to (suma wariancji wzdłuż każdego wymiaru danych). Więc: MSE Var ogółem R 2 = 1 - MSE / Var ogółem E SR2MSEVartotalR2=1MSE/VartotalES

R2=1ES

R 2S jest również równe średniej kwadratowej odległości euklidesowej od każdego punktu danych do średniej wszystkich punktów danych, więc możemy również myśleć o jako porównywaniu błędu rekonstrukcji z błędem „najgorszego modelu”, który zawsze zwraca znaczy jak rekonstrukcja.R2

Dwa wyrażenia dla są równoważne. Jak wyżej, jeśli istnieje tyle wektorów, ile oryginalnych wymiarów ( ), wówczas będzie wynosić jeden. Ale jeśli , będzie ogólnie mniejsze niż dla PCA. Innym sposobem myślenia o PCA jest to, że minimalizuje kwadratowy błąd rekonstrukcji. K = d R 2 K < d R 2R2k=dR2k<dR2

user20160
źródło
+1, bardzo jasne wytłumaczenie. Chcę tylko wspomnieć, dla kompletności, że jest tym, co napisałeś, tylko wtedy, gdy rozumiemy rekonstrukcję za pomocą tego samego , którego użyto do projekcji. Ogólnie rzecz biorąc, dla dowolnego wektora projekcji będzie lepsza rekonstrukcja, dająca wyższy . Mam odpowiedź, w której szczegółowo ją wyjaśniam . Zgadzam się jednak, że w przypadku tego konkretnego pytania dokładnie napisałeś, co jest potrzebne. V v R 2R2try[ing] to reconstruct the data from the projectionsVvR2
ameba
Tak, to dobra uwaga i miłe wytłumaczenie
20160
Co jeśli nie mam matrycy danych, a jedynie macierz kowariancji? Suma przekątnej macierzy kowariancji daje mi całkowitą wariancję, a jeśli miałbym zastosować PCA do tej macierzy kowariancji, wartości własne dawałyby wariancję wzdłuż każdego nowego kierunku, tak że wyjaśniona wariancja jest wartością własną / całkowitą wariancją. Ale jakie moje wektory nie są wektorami własnymi?
Zakłopotany
... O ile mogę stwierdzić, jeśli zaczniemy od macierzy kowariancji C , wówczas w tym przypadku należy wziąć | Cv_i | / sum (diag ( C )), aby uzyskać wyjaśnienie% wariancji.
Zakłopotany