PCA
훈련 집합을 이용하여 특징 추출이 사용할 변환 행렬 U를 추정
이전에는 s → 특징 추출 → x 같은 모습이었다면, PCA를 통해
훈련집합 → 변환행렬 U 추정 → 특징 추출
과정을 추가적으로 수행한다. 그러면 기존의 데이터를 질좋은 feature로 구성할 수 있게 된다.
특징 벡터 x의 차원 줄이기 + 정보 손실 최소화
- 차원 축소를 어떻게 표현할 것인가?
- 정보 손실을 어떻게 수량화 할 것인가?
차원 축소 표현하기
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개의 축을 찾아야 한다.
- 공분산행렬은 D x D 행렬이고, 이 행렬의 고유 벡터는 D개가 나온다.
- 고유벡터에 상응하는 고유 값이 클수록 중요도가 크다.
- 고유 값에 따라 정렬을 하고 상위 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의 응용
- 특징 추출
- 특징 벡터의 차원 축소
- 데이터 압축
- 데이터 시각화
'딥러닝기초' 카테고리의 다른 글
선형 SVM까지 끝장보기 (0) | 2022.04.09 |
---|---|
서포트 벡터 머신(SVM) 식까지 세워보기 (0) | 2022.04.07 |
Constraint Optimization와 같이 정리하는 KKT condition (0) | 2022.04.04 |
[SVD]Singular Value Decomposition와 고유치 및 고유벡터 (0) | 2022.03.18 |
CNN fully connected layer 들어가기까지 (0) | 2020.09.18 |