- 데이터를 저차원 공간으로 효율적으로 압축하려할 때, 어떤 기준으로 압축시켜야 가장 데이터 손실이 적을지 고려하게된다. 이때 고유값 분해를 이용한다.
- 데이터 xi∈Rd:i=1,...,N
- 저차원공간 cv:c∈R
- ∣∣v∣∣=1
- 데이터를 압축한다는것은 벡터 xi를 벡터 v 로 정사영하는 것이다.
- Projv(xi)=<xi,v>v
즉, vminimizei∑∣∣xi−Projv(xi)∣∣2 이때, 제약식 subject to ∣∣v∣∣=1 를 만족해야한다.
Projv(x)를 내적으로 대입하여 풀면, 아래와같다.
이때 ∣∣v∣∣ 가 1 이므로,(3)과 같이 정리할수 있다.
vminimize==i∑∣∣xi−Projv(xi)∣∣2i∑(∣∣xi∣∣2−2<xi,v>2+<xi,v>2∣∣v∣∣2)i∑(∣∣xi∣∣2−<xi,v>2)(1)(2)(3)
이를 정리하면, 이때, 최적화하는 식은 v에 영향을 받는 항은 <xi,v>2 항 뿐이므로,
∣∣xi∣∣2항을 목적식 외부로 빼낼 수 있게된다. 즉, 우리는 다음 목적식을 다음과 같이 v를 최대화하는 문제로 바꿀수 있다.
vmaximizei∑<xi,v>2=∣∣XTv∣∣2=vTXXTv
이를 통계학적으로 해석하면, 정사영된 데이터의 분산을 가장 크게만드는 단위벡터 v를 찾는 문제로 볼 수 있다.
왜 정사영된 데이터의 분산이 가장 크게 압축하는게 좋은걸까?
저차원 공간으로 데이터를 압축할때, 정보손실이 가장덜한 방법으로 이해할 수 있기 때문이다.
∣∣v∣∣=1이므로, 위에서 도출한 목적식을 풀면, 아래와같다.
vmaximizei∑<xi,v>2=∣∣XTv∣∣2=vTXXTv=λ∣∣v∣∣2=λ
즉, 데이터 공분산행렬 XXT의 고유값중 가장 큰 성분에 해당하는 고유벡터에 데이터를 정사영하면 데이터의 분산을 크게하면서 압축할 수 있고, 정보손실을 최소화 할 수 있게된다.
이때 XXT의 고유값중 가장 큰 값을 주성분이라고 한다.