본문 바로가기

딥러닝기초

[PCA] 고유치, 고유벡터의 대표적인 활용

PCA

 

 

훈련 집합을 이용하여 특징 추출이 사용할 변환 행렬 U를 추정

이전에는 s → 특징 추출 → x 같은 모습이었다면, PCA를 통해

훈련집합 → 변환행렬 U 추정 → 특징 추출

과정을 추가적으로 수행한다. 그러면 기존의 데이터를 질좋은 feature로 구성할 수 있게 된다.

 

특징 벡터 x의 차원 줄이기 + 정보 손실 최소화

  1. 차원 축소를 어떻게 표현할 것인가?
  2. 정보 손실을 어떻게 수량화 할 것인가?

 

 

차원 축소 표현하기

 

 

pca는 차원 축소를 신호 공간에 정의된 어떤 축으로의 투영으로 표현한다.

다음은 2차원 공간을 각기 하나의 축에 투영하여 1차원으로 축소된 모습이다.

 

 

그림을 보면 (a)<(b)<(c) 순서대로 정보를 최대한 나타냄을 알 수 있다.

 

 

정보 손실 수량화하기

 

 

pca는 샘플들이 원래 공간에 퍼져 있는 정도를 변환된 공간에서 얼마나 잘 유지하느냐를 척도로 삼는다. 그리고 이 척도는 변환된 공간에서 샘플들의 분산으로 측정한다.

(a)는 4개의 샘플을 2개로, (b)는 3개로, (c)는 4개를 유지하였다.

pca의 목적은 최소한의 loss를 가지고 정보를 압축하는 것이다.

즉 가장 높은 분산을 가지는 차원으로 축소를 수행하는 것이다.

 

💡 변환된 샘플들의 분산을 최대화하는 축(단위벡터 u)을 찾아라

 

라그랑즈와 여러 과정들을 통해서 다음처럼 공분산의 고유값 및 고유벡터를 구하면

PCA를 수행할 수 있게 됨이 밝혀졌다.

 

 

훈련 집합의 공분산 행렬을 구하고 공분산 행렬의 고유 벡터를 계산하자.

$\Sigma u=\lambda u$


$\sum = \begin{pmatrix} Cov(X,X) & Cov(X,Y) \\ Cov(Y,X) & Cov(Y,Y) \end{pmatrix} $

$Cov(X,Y) = E((X-\mu_X)(Y-\mu_Y))$

 

데이터를 바탕으로 구해보면,
$\sum = \begin{pmatrix} 1.000 & -0.250 \\ -0.250 & 1.6888 \end{pmatrix}$

 

이에 따른 고유치, 고유벡터는

$\lambda_1 = 1.76888, \ u_1^T = (-0.3092, 0.9510)$
$\lambda_2 = 0.9187, \ u_2^T = (-0.9510, -0.3092)$

고유치, 고유벡터를 계산하여 고유 값이 큰 $u$를 선택하여 투영하면 최대 분산을 갖게 된다.

 

 

PCA로 찾은 최적의 축


 

 

지금은 2차원에서 1차원으로 투영하는 상황을 보였다.

실제에서는 D차원을 d차원으로 줄이는 것이 목적이어서 d개의 축을 찾아야 한다.

  1. 공분산행렬은 D x D 행렬이고, 이 행렬의 고유 벡터는 D개가 나온다.
  2. 고유벡터에 상응하는 고유 값이 클수록 중요도가 크다.
  3. 고유 값에 따라 정렬을 하고 상위 d개의 고유 벡터를 선정하면 된다.

 

이 선정된 고유 벡터

$\mathbf{u}_1, \mathbf{u}_2, ... , \mathbf{u}_d$

주성분(Principal Component)이라 부른다.

d개의 주성분, 곧 d개의 고유벡터를 켜켜히 쌓으면 d x D의 변환행렬을 만들 수 있다.

 

$U = \begin{pmatrix} u_1^T \\ u_2^T \\ \vdots \\u_d^T \end{pmatrix}$

 

이렇게 얻은 변환행렬 U를 이용하여

 

$x = Us$

x : 특징벡터, U : 변환 행렬, s : 신호

이렇게 얻은 특징벡터들로 새로운 훈련 집합을 구성하고 훈련시킨다.

 

PCA의 응용

  1. 특징 추출
  2. 특징 벡터의 차원 축소
  3. 데이터 압축
  4. 데이터 시각화