PCA와 SVD — 차원 축소의 수학
공분산행렬 고유분해와 특이값분해 — 데이터에서 '본질'만 추출.
1000차원 데이터를 2차원 그래프에 그리려면? 얼굴 이미지 수천 장에서 공통 패턴을 뽑으려면? 넷플릭스가 시청 패턴에서 '장르 축'을 찾는 원리는? 모두 PCA·SVD 한 쌍의 수학 도구다.
PCA(주성분분석)는 '데이터 분산이 가장 큰 방향'을 찾는다. 직관: 흩어진 점들 사이에 가장 긴 '축'을 찾고, 그 축에 투영하면 정보 손실이 최소다. 이 축이 곧 공분산행렬의 최대 고유값에 대응하는 고유벡터다.
PCA 절차 4단계: ① 데이터 평균 0으로 센터링 → ② 공분산행렬 Σ 계산 → ③ Σ의 고유값·고유벡터 구하기 → ④ 상위 k개 고유벡터에 투영 (k차원으로 축소).
SVD(특이값분해)는 임의 행렬 A를 A = UΣVᵀ로 분해한다. U·V는 직교행렬(회전), Σ는 대각행렬(스케일). 정사각행렬이 아니어도 가능한 가장 일반적인 행렬 분해. PCA는 SVD의 특수 경우.
| 도구 | 입력 | 결과 | 응용 |
|---|---|---|---|
| PCA | n×d 데이터 행렬 | 주성분 축들 | 시각화, 특성 선택 |
| SVD | 임의 m×n 행렬 | UΣVᵀ 분해 | 추천시스템, 잠재의미분석 |
| Truncated SVD | 상위 k개 특이값만 사용 | 저계수(low-rank) 근사 | 이미지 압축, 노이즈 제거 |
넷플릭스 프라이즈의 핵심이 SVD였다. 사용자×영화 평점 행렬을 R ≈ UΣVᵀ로 근사하면, U의 행 = 사용자 '취향 벡터', V의 행 = 영화 '장르 벡터'. 결측 평점은 UΣVᵀ로 예측.
실생활 응용: ① 얼굴 인식 Eigenfaces ② 넷플릭스 추천(협업 필터링) ③ 유전자 발현 데이터 분석 ④ 자연어 LSA(잠재의미분석) ⑤ 이미지 압축(저계수 근사).
PCA에서 데이터 분산이 최대인 방향은 공분산행렬의 어떤 벡터인가?
SVD는 정사각행렬에만 적용할 수 있다.
다음 중 PCA가 주로 쓰이지 않는 작업은?
Truncated SVD로 상위 k개 특이값만 사용한 A_k는 Frobenius norm 기준으로 A에 가장 가까운 계수 k 행렬이다 (Eckart-Young 정리).