PCA 고유 벡터가 아닌 벡터의 "고유 값"(설명 된 분산의 백분율)을 얻는 방법?


10

PCA가 제공하는 좌표 공간이 아니라 약간 다른 (회전) 벡터 세트에 대해 데이터 세트의 분산 백분율을 얻는 방법을 이해하고 싶습니다.

여기에 이미지 설명을 입력하십시오

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

따라서 기본적으로 PCA가 제공하는 각 빨간색 축을 따라 데이터 집합의 분산은 고유 값으로 표시됩니다. 그러나 어떻게 같은 양의 등가 분산을 얻을 수 있습니까?하지만 두 개의 다른 축을 녹색으로 투영했습니다 .이 구성 요소 축의 pi / 10 회전입니다. IE는 원점에서 두 개의 직교 단위 벡터를 주었으므로 모든 임의의 (그러나 직교) 축을 따라 데이터 집합의 분산을 얻는 방법은 무엇입니까? 모든 분산이 설명되도록 PCA).


답변:


7

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

k=dk<d

R2S

R2=1Si=1kVar(Xvi)

이것은 투영의 합산 분산과 원래 치수에 따른 합산 분산의 비율입니다.

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

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

적합도 는 다른 모형과 동일한 방식으로 정의됩니다 (예 : 1에서 설명 할 수없는 분산의 분수). 모델의 평균 제곱 오차 ( )와 모델링 된 수량의 총 분산 ( )이 주어지면 . 데이터 재구성의 맥락에서 평균 제곱 오류는 (재구성 오류)입니다. 총 분산은 (데이터의 각 차원에 따른 분산의 합)입니다. 그래서: MSE 바르 R 2 = 1 - MSE / 바르 E SR2MSEVartotalR2=1MSE/VartotalES

R2=1ES

R 2S 는 또한 각 데이터 포인트에서 모든 데이터 포인트의 평균까지의 평균 제곱 유클리드 거리와 동일하므로, 를 재구성 오류를 항상 반환하는 '최악의 사례 모델'의 오류와 비교하는 것으로 생각할 수 있습니다 . 재구성으로 의미합니다.R2

대한 두 표현식 은 동일합니다. 위와 같이 원래 크기 ( ) 만큼 많은 벡터가 있으면 는 1이됩니다. 그러나 이면 는 일반적으로 PCA보다 적습니다. PCA를 생각하는 또 다른 방법은 제곱 재구성 오류를 최소화한다는 것입니다. k = d R 2 k < d R 2R2k=dR2k<dR2


+1, 매우 명확한 설명. 는 여러분이 작성한 것임을 "완벽하게"언급하고 싶습니다. " " 로 투영하는 데 사용 된 것과 동일한 를 통한 재구성을 이해하는 경우에만 해당됩니다 . 일반적으로 임의의 프로젝션 벡터 경우 더 나은 재구성이 이루어지며 높아집니다 . 나는 그것을 자세히 설명 하는 대답 있습니다. 나는이 특정 질문에 대해 당신이 쓴 것이 정확히 필요한 것에 동의합니다. V v R 2R2try[ing] to reconstruct the data from the projectionsVvR2
amoeba

예, 좋은 지적이자 좋은 설명입니다
user20160

데이터 행렬이없고 공분산 행렬 만 있으면 어떻게합니까? 공분산 행렬의 대각선의 합은 전체 분산을 제공하며, PCA를 해당 공분산 행렬에 적용 할 경우 고유 값은 각각의 새로운 방향을 따라 분산을 제공하므로 설명 된 분산은 고유 값 / 총 분산입니다. 그러나 내 벡터가 고유 벡터가 아닌 것은 무엇입니까?
혼란

... 내가 알 수있는 한 공분산 행렬 C로 시작하면 이 경우 | Cv_i | / sum (diag ( C )) : % 분산을 얻습니다.
혼란
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.