PCA 전에 데이터를 정규화하지 않으면 분산 비율이 더 잘 설명됩니다.


19

데이터 세트를 정규화 한 다음 3 개의 구성 요소 PCA를 실행하여 작은 설명 분산 비율 ([0.50, 0.1, 0.05])을 얻었습니다.

정규화하지 않고 내 데이터 세트를 희게 한 다음 3 개의 구성 요소 PCA를 실행했을 때 분산 비율이 높게 설명되었습니다 ([0.86, 0.06,0.01]).

3 개의 구성 요소에 많은 양의 데이터를 유지하려고하는데 데이터를 정규화해서는 안됩니까? 내 이해에서 우리는 항상 PCA 전에 정상화해야합니다.

정규화 : 평균을 0으로 설정하고 단위 분산을 갖습니다.

pca 

3
데이터를 "정규화"하여 의미하는 바가 확실하지 않지만 (PCA에서이를 수행하는 최소한 네 가지 표준 방법을 알고 있으며 아마도 더있을 수 있습니다) stats.stackexchange.com/questions/53 의 자료처럼 들릴 것입니다. 조명하고 있습니다.
whuber

Hi whubber : 각 관측치를 단위 규범으로 정규화하는 것을 의미합니다.

1
감사. 이에 대한 일반적인 용어는 "표준화"입니다. 그렇게하면 상관 관계에 따라 PCA를 수행하고 있습니다. 그래서 내가 제공 한 링크가 이미 귀하의 질문에 대답 할 수 있다고 생각합니다. 그러나 나는 왜 또는 어떻게 다른 결과를 얻을 수 있는지에 대한 대답을 실제로 보지 못했습니다 (아마도 복잡하고 표준화의 효과를 예측하기 어려울 수 있음).
whuber

1
PCA 이전의 미백이 일반적입니까? 그 목표는 무엇입니까?
shadowtalker

2
예를 들어 이미지 작업을하는 경우 이미지의 표준은 밝기에 해당합니다. 정규화되지 않은 데이터의 높은 설명 분산은 밝기의 변화로 많은 데이터를 설명 할 수 있음을 의미합니다. 이미지 처리에 자주 사용되지 않으므로 밝기가 중요하지 않은 경우 모든 이미지 단위를 먼저 표준으로 설정해야합니다. 설명 된 pca 구성 요소의 분산이 더 낮을 것이라고 생각하더라도 관심있는 내용을 더 잘 반영합니다.
Aaron

답변:


37

분석 목표에 따라 다릅니다. 몇 가지 일반적인 관행, 그 중 일부는 whuber의 링크에 언급되어 있습니다.

  1. 표준화는 일반적으로 PCA가 수행되는 변수가 동일한 척도로 측정되지 않을 때 수행됩니다. 표준화는 모든 변수에 동일한 중요성을 할당 함을 의미합니다.
  2. 동일한 척도로 측정되지 않고 표준화되지 않은 변수에 대해 작업하기로 선택한 경우 각 PC가 단일 변수에 의해 지배되는 경우가 종종 있으며 그 차이에 따라 변수의 정렬 순서를 갖습니다. (각 (초기) 구성 요소의로드 중 하나는 +1 또는 -1에 가깝습니다.)
  3. 경험 한 것처럼 두 가지 방법은 종종 다른 결과로 이어집니다.

직관적 인 예 :

나무의 높이와 같은 나무의 둘레라는 두 가지 변수가 있다고 가정하십시오. 우리는 부피를 계수로 변환 할 것입니다. 부피가 20 입방 피트보다 크면 나무의 부피가 커지고 그렇지 않으면 부피가 작아집니다. R에 사전로드 된 트리 데이터 세트를 사용합니다.

>data(trees)
>tree.girth<-trees[,1]
>tree.height<-trees[,2]
>tree.vol<-as.factor(ifelse(trees[,3]>20,"high","low"))

이제 높이가 실제로 피트 대신 마일 단위로 측정되었다고 가정합니다.

>tree.height<-tree.height/5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
>summary(tree.pca)
Importance of components:
                      Comp.1       Comp.2
Standard deviation     3.0871086 1.014551e-03
Proportion of Variance 0.9999999 1.080050e-07
Cumulative Proportion  0.9999999 1.000000e+00

첫 번째 성분은 데이터 변동성의 거의 100 %를 설명합니다. 로딩 :

> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height        -1    
tree.girth   1           

그래픽 평가 :

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

첫 번째 방법의 비 플롯

우리는 부피가 큰 나무가 큰 나무 둘레를 갖는 경향이 있지만 세 높이는 나무의 부피에 대한 정보를 제공하지 않습니다. 이것은 잘못된 것일 수 있으며 두 가지 다른 단위 측정의 결과입니다.

동일한 단위를 사용하거나 변수를 표준화 할 수 있습니다. 나는 둘 다 변동성의 균형 잡힌 그림으로 이어질 것으로 기대합니다. 물론이 경우 변수가 동일한 단위를 가져야하지만 표준화되어서는 안된다고 주장 할 수 있는데, 이는 우리가 두 가지 다른 것을 측정하고 있지 않다면 유효한 주장 일 수 있습니다. (나무의 무게와 나무의 둘레를 측정 할 때, 둘 다 측정해야 할 척도는 더 이상 명확하지 않습니다.이 경우 표준화 된 변수에 대한 명확한 논거가 있습니다.)

>tree.height<-tree.height*5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1    Comp.2
Standard deviation     6.5088696 2.5407042
Proportion of Variance 0.8677775 0.1322225
Cumulative Proportion  0.8677775 1.0000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height -0.956  0.293
tree.girth  -0.293 -0.956

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

두 번째 방법의 비틀 롯

우리는 이제 키가 크고 큰 둘레를 가진 나무가 작은 나무의 낮은 둘레와 낮은 높이 (오른쪽 위 모서리)와 비교하여 부피가 높습니다 (왼쪽 아래 모서리). 이것은 직관적으로 의미가 있습니다.

그러나 면밀히 살펴보면 높음 / 낮음 볼륨 간의 대비가 높이 방향이 아니라 둘레 방향에서 가장 강하다는 것을 알 수 있습니다. 표준화 할 때 어떤 일이 발생하는지 봅시다 :

>tree<-scale(tree,center=F,scale=T)
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1     Comp.2
Standard deviation     0.2275561 0.06779544
Proportion of Variance 0.9184749 0.08152510
Cumulative Proportion  0.9184749 1.00000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height  0.203 -0.979
tree.girth   0.979  0.203
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

세 번째 방법의 비 플롯

실제로, 둘레는 이제 큰 나무와 작은 나무의 차이의 대부분을 설명합니다! (바이 플롯의 화살표 길이는 원래 변수의 분산을 나타냅니다.) 따라서 동일한 척도로 측정하더라도 표준화가 유용 할 수 있습니다. 예를 들어 서로 다른 종의 나무의 길이를 비교할 때 표준화되지 않는 것이 좋습니다. 이는 정확히 동일한 측정이기 때문입니다.


2
(+1) 공분산 대 상관 관계에 대한 PCA에 대한 링크 된 대중 스레드에서 주어진 모든 것을 능가하는 매우 좋은 대답.
amoeba는 Reinstate Monica
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.