iMTE

PCA 주성분 분석 본문

Machine learning

PCA 주성분 분석

Wonju Seo 2018. 6. 11. 14:23

주성분 분석 PCA(Principal Components Analysis)


1. Curse of dimensionality 


어떤 데이터에서 feature를 추출할 수 있고, 이 feature의 개수가 많으면 많을 수록 학습이 잘 될 것이라고 착각을 하게된다. 하지만 실제 유의미한 feature들을 찾는 것이 매우 중요하고. 몇몇 논문들은 성능이 최대가 되는 조합을 random feature 조합을 찾아서 찾아낸다. 


Curse of dimensionality는 dimension reduction의 방법으로 고차원의 feature vector를 저차원의 feature vector로 바꿔주는 방법이다. Curse of dimensionality는 K-NN에서 흔히 다들 심각성을 설명하는데, 차원의 수가 많아질 수록 우리가 볼 때 실제 가깝지만, distance상에는 매우 멀리 있는 것처럼 느껴지는 현상이다. feature가 많아지면, 1. noise 특성이 포함됨 2. 학습 속도가 느려지고 학습 input들이 많아지는 단점이 있다. 따라서 dimension reduction이 필요하다.


이외에 PCA는 고차원의 데이터를 2~3차원으로 축소하여 data visualization할 때 사용된다.


PCA의 이해를 위해서는 eigenvector, eigenvalue에 대한 개념이 있어야 한다.



Square matrix A가 column vector x와 곱한 결과가 column vector에 scalar lambda를 곱한 값과 같을 때에, x를 eigenvector, lambda를 eigenvalue라고 정의한다. Eigenvector는 몇가지 특징이 있는데,


1. Eigenvector가 있는 n x n square matrix에는 n 개의 eigenvector가 존재한다.

2. 각 eigenvector는 서로 수직이다. (orthogonal) 이는 vector space의 데이터들을 x,y가 아닌 orthogonal인 eigenvector로 표현할 수 있음을 의미한다.

3. Eigenvector의 크기는 1이다.


2. PCA


PCA는 multi-dimensional feature vector로 구성된 데이터에 대해서 high-dimensional 정보를 유지하면서 low-dimensional로 차원을 축소 reduction of dimensionality를 하는 방법이다.


주성분 (주축) 을 통계적인 방법으로 구하고 feature vector를 주축 방향으로 projection함으로써, dimension을 축소할 수 있다. 


PCA는 상관(correlated)이 있는 feature들의 분산을 줄이는 차원에서 상관이 없는 feature의 집합으로 기준 축을 변환하여, feature vector를 재배치하는 과정이다.


이는 새로운 feature들의 공분산 행렬은 분산값만 갖는 diagonal matrix를 이룬다는 것이다. k차원으로 된 feature vector의 변환된 vector yi의 분산은 lambda k가 되고 yi의 가장 유용한 성분은 가장 큰 분산 값이 있는 성분이다. 따라서 제 1 주축은 feature vector의 변동량이 최대가 되는 축이 된다.


PCA에 의한 transformation matrix의 구성과 linear transformation


1. 공분산 행렬을 계산한다. (Matlab cov)



2. 고유분석을 행한다. (Matlab eig)



3. M개의 가장 큰 eigenvalue을 선택한다.


4. 선택된 eigenvalue와 관련된 eigenvector를 구하고 transformation matrix를 만든다.



5. feature vector를 다음의 변환식으로 변환한다.


'Machine learning' 카테고리의 다른 글

Boosting and AdaBoost  (0) 2018.06.12
확률 행렬과 Markov Chain  (0) 2018.06.12
Genetic Algorithm  (4) 2018.06.11
Decision tree 정리  (0) 2018.06.08
Decision tree learning (결정 트리 학습법)  (0) 2018.06.03
Comments