13. 주성분 분석 (Principal Component Analysis: PCA)
주성분 분석은 비지도 학습 기반 차원 축소 방법 중 하나로, 사영 후 원 데이터의 분산을 최대한 보존할 수 있는 기저인 Principal Axis/Principal Component를 찾아 차원을 줄이는 방법이다.
데이터를 사영시켰을 때, 손실되는 정보의 양이 적은 기저(축)을 찾아서 선택한다.
PCA의 배경
데이터 $X$의 사영 변환된 변수(주성분) $Z$에서 분산이 보존되도록 하는 기저 $a$를 찾는 것.
$$ Z_1 = a^T_1X = a_{11}X_1 + a_{12}X_2 + \cdots + a_{1p}X_p \\
Z_2 = a^T_2X = a_{21}X_1 + a_{22}X_2 + \cdots + a_{2p}X_p $$
공분산Covariance
공분산은 변수의 상관 정도로, $n$개의 데이터와 $d$개의 변수로 구성된 데이터 $X$에 대해 다음과 같이 정의된다.
($\hat{X}$는 $X$의 평균)
$$\text{Cov}(X) = \frac{1}{n}(X - \hat{X})(X-\hat{X})^T$$
데이터셋 전체의 공분산은 데이터셋의 공분산행렬의 대각합이다.
사영
데이터 $b$를 기저축의 유닛 벡터 $a$에 대하여 직교 사영한 벡터 $x$는 다음과 같이 정의된다.
$$ x = (ba)a $$
PCA 과정
1단계: 데이터 센터링 (Data Centering)
데이터의 평균을 0으로 변경한다. Standardization을 수행하면 된다.
$\mu$는 데이터의 평균, $\sigma$는 표준편차이다.
$$ X' = \frac{X-\mu}{\sigma} $$
2단계: 최적화 문제 정의
데이터 $X$를 벡터 $W$에 사영했을 때, 분산 $V$를 최대화해야 한다.
($S$는 $X$의 공분산 행렬이다.)
$$ V = \frac{1}{n}(w^TX)(w^TX)^T = \frac{1}{n}w^TXX^Tw = w^TSw$$
$$ \text{maximize }w^TSw \\
\text{s.t. } w^Tw = 1 (w \text{ is unit vector})$$
3단계: 최적화 문제 해결
라그랑지 멀티플라이어를 적용한다.
$$ L = w^TSw - \lambda(w^Tw -1)\\
\frac{\partial L}{\partial w} = 0 \rightarrow Sw - \lambda w = 0 \rightarrow (S-\lambda I)w = 0$$
이때, $W$가 $S$의 고유 벡터가 되고, $\lambda$가 $S$의 고유값이 된다.
4단계: 주축 정렬
아래 유도에 의해, $W_1$에 사영된 데이터의 분산은 $\lambda_1$이 된다.
$$ v = (w_1^TX)(w_1^TX)^T = w_1^TSw_1\\
\text{Since } Sw_1 = \lambda_1 w_1 , w_1^TSw_1 = w_1^T\lambda_1 w_1 = \lambda_1 $$
그러므로, 고유값이 가장 커지게 하는 고유벡터가 사영했을 때 공분산을 가장 크게하는 유닛벡터가 된다.
고유벡터들을 고유값의 크기 순으로 정렬하여, 고유값이 큰 벡터들을 PCA의 Principal Axis로 사용하면 된다!
예를들어, 어떤 데이터의 고유값이 $[3, 1]$과 같이 나올 때, 첫번째 벡터만으로 PCA를 수행하여 1D 데이터를 구성하면 $\frac{3}{3+1}=0.75$로 75%의 분산을 유지할 수 있다.
5단계: PCA로 변환하기 / 복원하기
이제 새로운 데이터 $Z_i = W_i^TX_i$로 정의된다. 이렇게 변환된 데이터는 다시 고차원 데이터로 변환할 수도 있는데, $ww^T = 1$임을 이용하면 된다. 그러나 일부 손실된 데이터는 완벽하게 복원되지 않으므로 유의해야 한다.
$$X' = Z_iW_i$$
주성분의 개수 선정하기
그렇다면, $n$차원의 데이터를 얼마나 축소해야할까? 크게 두 가지 방법으로 축소할 차원을 선정한다.
- 고유 값 감소율이 유의미하게 낮아지는 Elbow Point에 해당하는 주성분 선택하기
- 일정 수준 이상의 분산 비를 보존하는 최소한의 주성분 선택하기 (보통 70%이상)
$n$개의 고유값 중, $k$개의 축을 선택했을 때 보존되는 분산비
$$ V' = \frac{\sum^k_{i=1} \lambda_i}{\sum^n_{j=1} \lambda_j}$$
주성분 분석의 한계
1. 가우시안 분포가 아닌 자료에 적용하기 어려움
데이터 분포가 가우시안 분포임을 가정하기에, 가우시안이 아니거나 다중 가우시안 분포인 경우 적용하기 어렵다.
2. 분류 문제를 위해 디자인 되지 않았음
분류 문제를 위해 디자인된 방법이 아니기 때문에, 분류 성능 향상을 보장하지 못한다. (클래스를 고려하지 않고 무조건 공분산을 올리는 방향으로 축을 바꾸기 때문에, 클래스간의 거리가 가까워질 수 있다.)
PCA 변형
Randomized PCA
자료의 크기나 특성변수의 크기가 매우 크면, 주성분 W를 구하기 위한 SVD과정을 통한 고유벡터 계산이 불가능하거나 많은 시간이 소요된다.
이런 경우 QR 분해를 이용하여 행렬의 고유벡터를 계산한다.
Kernelized PCA
PCA처럼 선형 변환을 수행하지 않고, SVM 커널 트릭과 유사한 Kernel을 이용하여 비선형 변환을 수행한다.
특성 변수 $X$를 비선형 $h(X)$로 변환한 후, 이에 대해 PCA를 수행하여 차원축소를 수행한다.
'학부 수업 > 머신러닝' 카테고리의 다른 글
15. 앙상블 (Ensemble) (3) | 2020.12.16 |
---|---|
14. 교차 검증 (Cross Validation) (0) | 2020.12.16 |
12. 차원 축소 (Dimension Reduction) (0) | 2020.12.16 |
11. 군집화 (Clustering) (0) | 2020.12.15 |
10. 비선형 서포트 벡터 머신 (Non-linear SVM) (0) | 2020.11.25 |
댓글
이 글 공유하기
다른 글
-
15. 앙상블 (Ensemble)
15. 앙상블 (Ensemble)
2020.12.16 -
14. 교차 검증 (Cross Validation)
14. 교차 검증 (Cross Validation)
2020.12.16 -
12. 차원 축소 (Dimension Reduction)
12. 차원 축소 (Dimension Reduction)
2020.12.16 -
11. 군집화 (Clustering)
11. 군집화 (Clustering)
2020.12.15