PCA 목적
고차원 데이터의 정보를 최대한 유지하면서 저차원 공간으로 투영한다.
핵심 아이디어는 다음과 같다.
데이터 분산(Variance) 최대 방향 탐색
분산이 크다는 것은 데이터가 더 넓게 퍼져 있다는 의미이다.
- 정보량이 많다.
- 데이터를 구분하기 쉽다.
따라서 분산이 최대가 되는 방향만 남기면 정보 손실을 최소화할 수 있다.
데이터 표현
데이터 개수를 , Feature 개수를 라고 가정한다.
데이터 행렬은 다음과 같다.
각 행은 하나의 데이터, 각 열은 하나의 Feature를 의미한다.
먼저 평균 제거(Centering)를 수행한다.
평균 제거의 목적은 다음과 같다.
모든 데이터의 중심을 원점으로 이동한다.
공분산 계산 기준을 통일할 수 있다.
차원 축소 문제
100차원 데이터를 1차원으로 줄인다고 가정한다.
새로운 축을 다음과 같이 둔다.
선택한다.
모든 데이터를 해당 방향으로 투영한다.
여기서 문제 하나가 존재한다.
어떤 방향을 선택해야 정보를 가장 많이 유지할 수 있을까?
분산 최대화
PCA에서 정보량은 분산으로 해석한다.
따라서 목표는 다음과 같다.
평균 제거가 완료된 상태라면 다음을 만족한다.
분산을 전개하면 다음과 같다.
여기서 다음 행렬은 공분산 행렬을 의미한다.
따라서 다음과 같이 정리할 수 있다.
결국 목적 함수는 다음과 같다.
제약조건
문제 하나가 존재한다.
크기를 계속 키우면 다음 값이 무한히 증가한다.
의미 없는 해가 발생한다.
따라서 다음 제약을 추가한다.
최종 문제는 다음과 같다.
subject to
라그랑주 승수법
라그랑주 함수는 다음과 같다.
미분하면 다음과 같다.
정리하면 다음과 같다.
이는 바로 **고유값 문제(Eigenvalue Problem)**이다.
왜 고유벡터 선택?
양변에 다음 값을 곱한다.
그러면 다음과 같다.
제약조건은 다음과 같다.
이를 대입하면 다음과 같다.
좌변은 다음을 의미한다.
투영 후 분산
우변은 다음을 의미한다.
고유값
즉, 다음과 같이 해석할 수 있다.
고유값 = 해당 방향 분산
가장 큰 고유값에 대응하는 고유벡터를 선택한다.
이 벡터가 첫 번째 Principal Component이다.
두 번째로 큰 고유값에 대응하는 고유벡터도 선택한다.
이 벡터가 두 번째 Principal Component이다.
최종 차원 축소
상위 개 고유벡터를 선택한다.
차원 축소 결과는 다음과 같다.
즉, 다음 원래 좌표계를
다음 새로운 좌표계로 변환한다.
PCA의 본질은 다음과 같다.
분산 최대 직교기저(Orthogonal Basis) 탐색
또는
데이터 분산 최대 방향으로 좌표계 회전(Rotation)
SVD 관계
실제 구현에서는 대부분 Eigen Decomposition 대신 SVD를 사용한다.
여기서 다음 행렬의 열벡터가 Principal Component와 같다.
이유는 다음과 같다.
이는 공분산 행렬의 고유분해 결과와 동일하기 때문이다.