PCA의 데이터 중심화 (또는 의미가없는)는 어떤 차이가 있습니까? 수학이 더 쉬워 지거나 첫 번째 PC가 변수의 수단에 의해 지배되는 것을 막는다 고 들었지만 아직 개념을 제대로 파악할 수 없었습니다.
예를 들어, 여기서 가장 좋은 대답 은 회귀 및 PCA에서 데이터를 중심에 어떻게 차단을 제거합니까? 중심이 포인트 클라우드의 주축이 아니라 원점을 통해 첫 번째 PCA를 끌어 당기는 방법을 설명합니다. 공분산 행렬의 고유 벡터에서 PC를 얻는 방법에 대한 나의 이해를 바탕으로, 왜 이런 일이 일어날 지 이해할 수 없습니다.
또한, 센터링이 있거나없는 내 자신의 계산은 거의 의미가없는 것 같습니다.
iris
R 의 데이터 세트에서 setosa 꽃을 고려하십시오 . 샘플 공분산 행렬의 고유 벡터와 고유 값을 다음과 같이 계산했습니다.
data(iris)
df <- iris[iris$Species=='setosa',1:4]
e <- eigen(cov(df))
> e
$values
[1] 0.236455690 0.036918732 0.026796399 0.009033261
$vectors
[,1] [,2] [,3] [,4]
[1,] -0.66907840 0.5978840 0.4399628 -0.03607712
[2,] -0.73414783 -0.6206734 -0.2746075 -0.01955027
[3,] -0.09654390 0.4900556 -0.8324495 -0.23990129
[4,] -0.06356359 0.1309379 -0.1950675 0.96992969
데이터 세트를 먼저 가운데에 놓으면 정확히 동일한 결과를 얻습니다. 센터링이 공분산 행렬을 전혀 변경하지 않기 때문에 이것은 매우 명백한 것 같습니다.
df.centered <- scale(df,scale=F,center=T)
e.centered<- eigen(cov(df.centered))
e.centered
이 prcomp
함수는 중심 및 비 중심 데이터 세트 모두에 대해 정확하게이 고유 값-고유 벡터 조합을 생성합니다.
p<-prcomp(df)
p.centered <- prcomp(df.centered)
Standard deviations:
[1] 0.48626710 0.19214248 0.16369606 0.09504347
Rotation:
PC1 PC2 PC3 PC4
Sepal.Length -0.66907840 0.5978840 0.4399628 -0.03607712
Sepal.Width -0.73414783 -0.6206734 -0.2746075 -0.01955027
Petal.Length -0.09654390 0.4900556 -0.8324495 -0.23990129
Petal.Width -0.06356359 0.1309379 -0.1950675 0.96992969
그러나이 prcomp
기능에는 기본 옵션이 center = TRUE
있습니다. 이 옵션을 비활성화하면 중앙 집중화되지 않은 데이터에 대해 다음과 같은 PC가 생성됩니다 ( false로 설정되어 p.centered
있으면 동일하게 유지됨 center
).
p.uncentered <- prcomp(df,center=F)
> p.uncentered
Standard deviations:
[1] 6.32674700 0.22455945 0.16369617 0.09766703
Rotation:
PC1 PC2 PC3 PC4
Sepal.Length -0.8010073 0.40303704 0.4410167 0.03811461
Sepal.Width -0.5498408 -0.78739486 -0.2753323 -0.04331888
Petal.Length -0.2334487 0.46456598 -0.8317440 -0.19463332
Petal.Width -0.0395488 0.04182015 -0.1946750 0.97917752
중심이없는 데이터의 공분산 행렬에 대한 내 고유 벡터 계산과 다른 이유는 무엇입니까? 계산과 관련이 있습니까? 필자는 prcomp
고유 값 분해 대신 SVD 방법이라는 것을 사용하여 PC를 계산하는 것을 언급했습니다 . 이 함수 princomp
는 후자를 사용하지만 결과는와 동일합니다 prcomp
. 내 문제가이 게시물 상단에 설명 된 답변과 관련이 있습니까?
through the origin, rather than the main axis of the point cloud
. PCA는 항상 원점을 뚫습니다. 데이터가 중심에 있으면 원점 = 중심입니다.
Based on my understanding of how the PC's are obtained from the covariance matrix's eigenvectors...
링크 된 답변에서 의견을 읽으십시오. 공분산은 데이터의 중심을 의미하며 PCA "공분산"= PCA는 중앙 데이터를 의미합니다. 원래 변수를 중심에 두지 않으면 해당X
데이터를 기반으로하는 PCA는X'X/n [or n-1]
행렬에서 = PCA가됩니다 . 중요한 개요 : stats.stackexchange.com/a/22520/3277 도 참조하십시오 .