PCA

Research/Image Processing 2007. 7. 13. 16:30

 

 

2. Principal Components Analysis : PCA

 

 

 

 

이 내용은 "저희 대학원 강의"에서 한 내용인데요. 강의 교수님께서 이해하기 쉽게 설명해주셔서,, 그동안 이해가 잘 안가서..정리 하고 싶었는데 수업을 듣고 이해가 와서 하는 것입니다.

 

물론 수학적 내용은 잘 찾아보시길..바랍니다. ㅎㅎ

 

관련 paper는"A tutorial on Principal Component Analysis", Lindsay Smith입니다.

한번쯤 PCA에 대한 공부를 해본사람의 일종의 기본 문서이죠.

 

1. PCA 개념

 

- 확률적인 기술을 이용

- 보통, 얼굴 인식, 이미지 압축,그리고 높은 차원을 가지고 있는 데이터에서 일정한 패턴을 찾기 위한 기술.

- 관련 수학적 용어 : mean, standard deviation, covariance, eignvectors, eignvalues

 

2. Background

 

일단 위의 수학적 용어에서,

mean과 Standard deviation과의 차이를 설명합니다.

mean은 말그대로 데이터에 대한 평균을 말하는 것이고, 당연히 모든 데이터를 더해서 그 데이터수를 나누면 그게 평균이죠.

 

그러나, 만약 다음과 같은 데이터가 있다고 가정합시다.

 

[0, 8, 12, 20] and [8, 9, 11, 12]

 

모두 같은 평균 값을 가지고 있습니다. 이러한 두 데이터의 차이를 mean으로만으로 구별할 수 없습니다.

 

따라서 spread 즉, 데이터의 흩어진 정도를 알아보기 위해서는standard deviation(표준 편차)을 구해야 위의 두 데이터의 차이를 구별할 수가 있는 거죠.

(모든 공식은 위의 참고 논문을 보세요. 표현할수가 없네요.)

 

standard deviation을 구하면 당연히variance(분산으로 번역되던가.) 을 구할 수 있죠. 이 뜻은 변화량을 구한다든가..하죠.

아주 간단하게 제곱을 해주면 됩니다. 표준 편차가 루트가 씌어진 형태라서.^^

 

우리는 하나의 벡터(데이터) 공간에서만 하는 것이 아니죠? ^^

만약 몸무게에 따른 키의 관계를 구하고 싶을때가 있습니다. 이럴때, 우리는Covariance(공분산)을 구합니다. 이것은 variance의 형태와 거의 같습니다. 단지 차원이 높아진 경우라고 해야하나..

 

이러한 covariance에서 그에 따른 Matrix를 구하게 되죠. 당연히 여러개 즉, 여러 차원이 확장하게 되면, x, y, z에 대한 3차원의 set이 존재한다고 가정했을때, 3*3에대한 Matrix가 존재하게 되고

cov(x,y)는 cov(y,z)와 같으므로 이때 대칭 즉, symmetric metrix가 됩니다.

 

이제 그러한 메트릭스에 대해 다음 예의 행렬 계산을 보면,,

 

                    2   3                  1                       11

                    2   1       *          3           =          5

 

그리고

                    2   3                  2                      12                    3

                    2   1       *          3           =          5         =  4*  2

 

이때 아래의 행렬을 보면,  4를 eignvalue라고 하고3를 eignvector 합니다.

                                                                      2

 

첫번째 행렬은 없는 경우입니다.

 

3. PCA

 

첫번째, 해당 데이터를 수집해야합니다.

 

두번째, 평균과의 차이를 구해야합니다.

 

세번째, covariance matrix를 구해야합니다.

 

네번째, eignvalue와 eignvector를 구해야합니다.

이때 중요한것은 eignvalue가 여러개 나타날 수 있다는 것입니다. 그중 사용하는 사람이 그중 몇개를 골라서 사용해야 하는데요.

보통은 eignvalue가 가장 높은 것을 고릅니다. 이때 그 eignvalue를 Principle Component (주요소)라고  부릅니다. (하나가 아닐수 있습니다. 왜냐면 높은 차원에서는 여러 개의 주요소가 생깁니다. 더 정확한 말은 가장 높은 값일수록 그 데이터에 대한 특징이 잘 나타난다는 거죠)

 

이 의미는 그 eignvalue로 모든 데이터를 재편할수가 있는데요. 이 의미는 그때의 eignvalue가 가장 그 데이터의 구별된 특성을 잘 나타내는 것이죠.

 

관련 paper 그림 3.2(p.15)를 보면 대각선으로 두 축을 그은것을 볼수 있는데요. 하나의 축에 밀집도가 구성되는 것을 볼수 있습니다. 그 축이 바로 eignvalue(Principle Component)와 연관된 eignvector죠.

 

이 의미는 eignvector를 가지고 새로운 축 즉, 예를 들어 eignvector에 관련된 좌표계를 표현할수가 있습니다. 그 그 데이터만의 특성으로 표현 가능하다는 것이죠.

 

다섯번째, 이러한 데이터를 가지고 관련 paper 3.3 (p.18)를 보면 십자가 형식으로 축을 볼수 있는데요. 이런식으로 data trainsform하게 됩니다. 즉 하나의 축으로 밀집된 형태로 볼수 있는데요. 우린 이전에 2개를 구했습니다. 당연히 n차원인데요. 이것을 Principle Component를 선택해서 그만큼의 차원을 확 줄일수 있습니다.

 

그래서 그림 3.4를  보시면 x에 대한 차원만으로도 구성하게 된다는 거죠. 따라서 x는 그 데이터에 대한 확실히 구별된 특성을 지닌다는 의미이고 또한 PCA를 사용함으로써 불필요한 차원을 줄일수가 있다는 말됩니다.

 

굉장하죠..어케 이런생각을..흑흑

 

다시 말하지만"A tutorial on Principal Component Analysis", Lindsay Smith    이 paper를 구하셔서 따라가면서 보셔야 이 게시판의 내용을 이해하실수 있습니다.

'Research > Image Processing' 카테고리의 다른 글

GPU Gems 2의 CD내용물  (2) 2008.05.20
ray casting(3)  (3) 2008.05.09
선형대수의 기본  (1) 2007.10.22
분산과 표준편차  (3) 2007.08.10
FLV를 파헤쳐보자!  (0) 2007.02.23

Posted by 영웅기삼
,