[ML] 차원 축소 - PCA (Principal Component Analysis)

강주형·2022년 7월 19일
0
post-custom-banner

PCA 개요

PCA, Principal Component Analysis, 주성분 분석

고차원의 원본 데이터를 저차원의 부분 공간으로 투영하여 데이터 축소

  • 예시: 10차원의 데이터를 2차원의 부분 공간으로 투영하여 데이터 축소
  • PCA는 원본 데이터가 가지는 데이터 변동성을 가장 중요한 정보로 간주하고 이 변동성에 기반한 원본 데이터 투영으로 차원 축소

  • 원본 데이터 변동성이 가장 큰 방향으로 순차적으로 축을 생성하고, 그 축에 데이터를 투영

  • 두 번째로 변동성이 큰 축은 첫 번째 축에 직각이 되는 벡터인 직교 벡터임
    -> 세 번째 축은 두 번째 축에 직각이 되는 벡터인 직교 벡터
    -> ...

원본 데이터의 Feature 개수에 비해 매우 작은 주성분으로 원본 데이터의 총 변동성을 대부분 설명할 수 있는 분석법!


선형대수 관점

PCA 순서
1. 원본 데이터의 공분산 행렬 추출
2. 공분산 행렬을 고유벡터와 고윳값 분해
3. 원본 데이터를 고유 벡터로 선형 변환
4. PCA 변환 값 도출

  • 고유벡터
    -> PCA의 주성분 벡터로서 입력 데이터의 분산이 가장 큰 방향을 나타냄
  • 고윳값
    -> 고유벡터의 크기를 나타내며 입력 데이터의 분산
  • 공분산
    -> 두 변수간의 변동을 의미함
    Cov(X,Y)>0Cov(X, Y) > 0이면, XX가 증가할 때, YY도 증가함
  • 공분산 행렬
    -> 여러 변수와 관련된 공분산을 포함하는 정방형 행렬이며 대칭 행렬

선형 변환

  • 특정 벡터에 행렬 A를 곱해 새로운 벡터로 변환하는 것을 의미
  • 특정 벡터를 하나의 공간에서 다른 공간으로 투영하는 개념
    -> 이때 이 행렬을 공간으로 가정하는 것!

고유벡터

  • 행렬 AA를 곱하더라도 방향이 변하지 않고, 그 크기만 변하는 벡터를 지칭
  • Ax=axAx = ax (AA는 행렬, xx는 고유벡터, aa는 스칼라)
  • 고유벡터는 여러 개 존재하고, 정방 행렬은 최대 그 차원 수만큼의 고유벡터를 가질 수 있음
  • 고유벡터는 행렬이 작용하는 힘의 방향과 관계가 있어서 행렬을 분해하는 데 사용

공분산 행렬의 고윳값 분해

CC: 공분산 행렬
PP: 고유벡터
Σ\Sigma: 고윳값 정방 행렬

공분산 행렬이 다음과 같이 분해됨

C=PΣPT=[e1e2...en][λ1...0.........0...λn][e1e2...en]C = P\Sigma P^T = \left[\begin{matrix} e_1 & e_2 & ... & e_n \end{matrix}\right] \left[\begin{matrix} \lambda_1 & ... & 0 \\ ... &... &...\\ 0 & ... & \lambda_n \\ \end{matrix}\right] \left[\begin{matrix} e_1\\ e_2\\ ...\\ e_n \end{matrix}\right]

e1e_1은 가장 분산이 큰 방향을 가진 고유벡터
e2e_2는 e_1에 수직이면서 다음으로 가장 분산이 큰 방향을 가진 고유벡터


PCA 변환 수행 절차

  1. 입력 데이터 세트의 공분산 행렬을 생성
  2. 공분산 행렬의 고유벡터와 고윳값을 계산
  3. 고윳값이 가장 큰 순으로 K개(PCA 변환 차수)만큼 고유벡토 추출
  4. 고윳값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터 변환
profile
Statistics & Data Science
post-custom-banner

0개의 댓글