2015년 6월 21일 일요일

특이값분해(Principal Component Analysis:PCA)가 어떻게 선형 자기상관성을 제거하는가?

이 문서는 특이값분해를 알아야 이해할 수 있습니다.
직교행렬의 특징에 대해서도 알아야 합니다.

우선 PCA의 과정을 간추려보자.
행렬 A를 아래와 같이 정의해보자


각 열은 공정 하나의 데이터 혹은 데이터마이닝에서 instance내지 transaction으로 부르는 것이다. 또, 각 행은 특성, 혹은 attribute라고 부르는 것이다.
즉, 확보된 데이터가 충분히 크다면 이는 (n>m)이 되어 Thin matrix가 된다.

1) 공분산행렬을 고유값분해(Eigenvalue decomposition of covariance matrix)
여기서 P에다가 고유값분해를 시전하면


가 되는데 여기서 S는 P의 고유벡터들을 가로로 눕힌것들의 집합이다.
여기서 행렬 S를 뽑는다. P는 대칭행렬이므로(공분산은 교환법칙이 성립하므로, 대칭행렬이 될수밖에 없음) S는 직교행렬이 되고, 직교행렬의 특징에따라

or
를 만족한다.
이와같은 절차로 S의 각 행을 주성분(Principal component)라고 한다.

2)데이터행렬을 특이값분해(Singular value decomposition)
특이값분해는 아래와 같다.



이며, 분해된 각 행렬들은
U:AA'의 고유벡터들을 세로로 세워둔거
Σ:A'A의 고유값들의 대각행렬을 포함하는 직사각행렬
V:A'A의 고유벡터들을 세로로 세워둔 것.

여기서 A'A의 특징을 잘 알아볼 이유가 있는데 이는 행렬의 곱연산의 정의로 보면...


이 되는데, 벡터의 내적을 n으로 나누면 공분산이 된다.(공분산의 정의 참고)
즉 A'A를 고유값분해하는 것은 P의 고유벡터인 S를 찾는것이 된다.

S=kV'


따라서 A=BS로 분해한다는 것은 A=kBV'가 되는 것이며, kB=UΣ이므로 이또한 직교행렬이 된다.

직교행렬이라는 것은 서로 다른 열끼리의 내적값이 0이라는 것이므로, 상관계수가 0이라는 뜻이다.