본문 바로가기
유도항법제어/데이터기반제어

[PCA–3] 주성분 분석 (PCA) 특징

by 깊은대학 2021. 2. 20.

n차원 공간 상의 m개 데이터 x(1),x(2),...,x(m)Rn 에 대한 주성분 분석(PCA) 알고리즘을 정리하면 다음과 같다.

 

 

(1) 데이터셋의 샘플 평균을 계산한다.

 

μ=1mi=1mx(i)

 

(2) 모든 데이터셋을 다음과 같이 치환한다.

 

y(i)=x(i)μ

 

(3) 데이터셋의 스냅샷(snapshot) 행렬을 만든다.

 

Y=[y(1)y(2)y(m)]Rn×m

 

(4) 스냅샷 행렬 Y의 특이값 분해(SVD, singular value decomposition)를 계산한다.

 

Y=UΣVTU=[u1un]Rn×n,  V=[v1vm]Rm×m

 

(5) d차원 (d<n) 직교 좌표축 wi, i=1,...,d 를 선택한다.

 

W=[w1w2wd]=[u1w2ud]=Ud  Rn×d

 

(6) 좌표축 wi, i=1,...,d 의 축성분을 계산한다.

 

zi=UdT(x(i)μ)

 

(7) 차원이 축소된 좌표계에서 원래 차원의 좌표계로 데이터를 복원시키려면 다음과 같이 계산한다.

 

x^(i)=μ+Udzi

 

 

 

주성분 분석(PCA)의 특징을 살펴보자.

우선 주성분 분석(PCA)은 투사 오차(prediction error)를 최소화하도록 축소 차원의 좌표축 벡터인 w1,w2,...,wd 를 결정하는 알고리즘이다. 그런데 투사 오차를 최소화하는 것은 곧 투사 분산을 최대화하는 것과 동일하다. 즉 데이터가 더 넓게 분포된 방향으로 좌표축이 정해진다. 이에 대해서 수식으로 알아보자.

행렬 YYT의 고유값 σi2과 고유벡터 ui는 특이값 분해를 이용하여 다음과 같이 구할 수 있었다.

 

YYTui=σi2ui,  i=1,...,n

 

여기서 ui는 PCA에서 축소 차원의 좌표축으로 설정한 서로 직각인 단위 벡터고 σi2는 큰 수에서 작은 수의 순서로 정렬시킨 고유값이다. 위 식에서 행렬 YYT를 전개해보면 다음과 같이 된다.

 

YYT=[y(1)y(m)][(y(1))T(y(m))T]=i=1my(i)(y(i))T

 

즉 행렬 YYT는 데이터셋의 샘플 분산(정확히는 1m1YYT이 샘플 분산이다)이므로 행렬 YYT의 고유값과 고유벡터는 샘플 분산의 고유값과 고유벡터이다. 이것으로 축소 차원의 좌표축은 데이터가 더 넓게 분포된 방향으로 정해진다는 것을 알 수 있다. PCA에서 주성분이라 함은 데이터의 분산이 가장 큰 방향을 의미한다.

 

 

둘째, 축소 차원으로 표현된 데이터 zi는 서로 비상관(uncorrelated) 관계에 있다. 참고로 zi를 특징(feature)벡터라고도 한다. 수식으로 알아보기 위해서 zi의 샘플 분산을 계산해 보자.

 

i=1mziziT=i=1mUdT(x(i)μ)(x(i)μ)TUd=UdT(i=1m(x(i)μ)(x(i)μ)T)Ud=UdTYYTUd=UdTUΣ2UTUd=[Id0]Σ2[Id0]=Σd2

 

zi의 샘플 분산이 대각 행렬로 나오므로 zi는 서로 비상관 관계에 있다는 것을 알 수 있다. 즉 PCA는 서로 연관 가능성이 있는 고차원 데이터를 서로 비상관 관계에 있는 저차원 데이터로 변환시켜준다.

PCA 알고리즘의 (3)에서 스냅샷 행렬은 n차원 공간상의 m개 데이터로 구성된다. 일반적인 영상 데이터나 물리 시스템의 실험 또는 시뮬레이션 데이터(예를 들면 CFD 데이터) 등은 차원 n이 매우 크다(예를 들면 109 정도). 반면에 데이터 수 m은 데이터의 차원에 비해서 상당히 작은 경우가 많다(예를 들면 104 정도). 이 경우에는 특이값 분해를 통하여 특이값과 특이 벡터를 구하기가 어렵고 행렬 YYTRn×n의 고유값과 고유벡터를 통해 계산하기도 힘들다.

 

 

반면에 행렬 YTYRm×m은 사이즈가 작기 때문에 고유값과 고유벡터 계산이 상대적으로 쉽다. 행렬 YTY의 고유값과 고유벡터를 이용하면 스냅샷 행렬 Y의 특이값과 왼쪽 특이벡터 ui를 쉽게 구할 수 있다.

 

 

행렬 Y의 특이값 분해 Y=UΣVT로부터

 

YYTvi=σi2vi,  i=1,...,m

 

이 성립한다. 여기서 vi는 스냅샷 행렬 Y의 오른쪽 특이벡터이자 행렬 YTY의 고유벡터이다. 한편 Y=UΣVT로부터 Yvi=σiui이 성립하므로

 

ui=Yviσi,  i=1,...,m

 

의 관계식을 얻을 수 있다. 위 두 식을 이용하여 스냅샷 행렬 Y의 왼쪽 특이벡터 ui와 특이값 σi를 계산해 낼 수 있다.

 

 

 

댓글