notes

주성분 분석(PCA)

← 책장

  • 데이터를 저차원 공간으로 효율적으로 압축하려할 때, 어떤 기준으로 압축시켜야 가장 데이터 손실이 적을지 고려하게된다. 이때 고유값 분해를 이용한다.
  • 데이터 xi∈Rd:i=1,...,Nx_i \in \mathbb{R}^{d}: i = 1,...,N
  • 저차원공간 cv:c∈R{cv : c \in \mathbb{R}}
  • ∣∣v∣∣=1||v|| = 1
  • 데이터를 압축한다는것은 벡터 xix_i를 벡터 vv 로 정사영하는 것이다.
    • Projv(xi)=<xi,v>vProj_v(x_i) = <x_i, v>v

즉, minimizev∑∣∣xi−Projv(xi)∣∣2i\underset{v}{\text{minimize}} \underset{i}{\sum{||x_i - Proj_v(x_i)||_2}} 이때, 제약식 subject to ∣∣v∣∣=1subject\space to \space ||v|| =1 를 만족해야한다.

Projv(x)Proj_v(x)를 내적으로 대입하여 풀면, 아래와같다. 이때 ∣∣v∣∣||v|| 가 1 이므로,(3)과 같이 정리할수 있다.

minimizev∑i∣∣xi−Projv(xi)∣∣2(1)=∑i(∣∣xi∣∣2−2<xi,v>2+<xi,v>2∣∣v∣∣2)(2)=∑i(∣∣xi∣∣2−<xi,v>2)(3)\begin{align} \underset{v}{\text{minimize}}&\underset{i}{\sum}{||x_i - Proj_v(x_i)||_2} &(1)\\= &\underset{i}{\sum}(||x_i||^2 - 2<x_i,v>^2 + <x_i,v>^2||v||^2)&(2)\\ = &\underset{i}{\sum}(||x_i||^2 - <x_i,v>^2)&(3) \end{align}

이를 정리하면, 이때, 최적화하는 식은 v에 영향을 받는 항은 <xi,v>2<x_i,v>^2 항 뿐이므로, ∣∣xi∣∣2||x_i||^2항을 목적식 외부로 빼낼 수 있게된다. 즉, 우리는 다음 목적식을 다음과 같이 v를 최대화하는 문제로 바꿀수 있다. maximizev∑i<xi,v>2=∣∣XTv∣∣2=vTXXTv \underset{v}{maximize}\underset{i}{\sum}{<x_i, v>^2} = ||X^Tv||^2 = v^TXX^Tv 이를 통계학적으로 해석하면, 정사영된 데이터의 분산을 가장 크게만드는 단위벡터 v를 찾는 문제로 볼 수 있다.

왜 정사영된 데이터의 분산이 가장 크게 압축하는게 좋은걸까? 저차원 공간으로 데이터를 압축할때, 정보손실이 가장덜한 방법으로 이해할 수 있기 때문이다.

∣∣v∣∣=1||v|| = 1이므로, 위에서 도출한 목적식을 풀면, 아래와같다.

maximizev∑i<xi,v>2=∣∣XTv∣∣2=vTXXTv=λ∣∣v∣∣2=λ\begin{align} \underset{v}{maximize}\underset{i}{\sum}{<x_i, v>^2} &= ||X^Tv||^2 \\&= v^TXX^Tv \\ &= \lambda||v||^2 = \lambda \end{align}

즉, 데이터 공분산행렬 XXTXX^T의 고유값중 가장 큰 성분에 해당하는 고유벡터에 데이터를 정사영하면 데이터의 분산을 크게하면서 압축할 수 있고, 정보손실을 최소화 할 수 있게된다. 이때 XXTXX^T의 고유값중 가장 큰 값을 주성분이라고 한다.