본문 바로가기
데이터 분석

차원 축소 - 특잇값 분해(SVD) 및 PCA 관계

by Data Lib 2023. 10. 11.

차원 축소의 마지막 포스팅으로 특잇값 분해(SVD)에 대해 알아보도록 하겠습니다. SVD는 머신러닝 뿐만아니라 딥러닝에서도 사용하는 차원 축소 기법입니다. 알려지기로는 신호 처리와 통계학 분에에 자주 사용된다고 합니다. 개인적인 경험으로는 NLP(자연어 처리, Natural Language Processing)를 다룰때 텍스트를 통계 기반 기법으로 처리할 때 사용했습니다.

 

 

특잇값 분해(SVD, Singular Value Decomposition)

행렬을 특정한 구로로 분해하는 방식으로 고유값 분해처럼 행렬을 대각화하는 방법 중에 하나입니다. 어떤 nxm행렬 A는 다음과 같은 형태의 세 가지 행렬의 곱으로 분해 할 수 있습니다. 

수식 𝐴=𝑈Σ𝑉^𝑇 와 같습니다. 

  • 𝑈 =mxm 직교행렬
  • Σ=mxn 대각행렬
  • V=nxn  직교행렬

A는 n차원 공간에서 m 차원 공간으로의 선형변환을 합니다. 이 과정을 세분화하면 아래와 같습니다. 

  1. 𝑉^𝑇에 의해 회전시킨 후
  2. Σ로 스케일을 변화시킴
  3. 다시 𝑈로 회전시키는 것
  4. Σ에 의해서는 특이값의 크기에 따라서 원이 타원이 되거나 구가 럭비공이 되는 것과 같은 식의 형태변환이 일어남

 

특잇값 분해(SVD)
특잇값 분해(SVD)

SVD 목적 및 구현 방식

특잇값 분해의 목적은 행렬의 크기를 감소시키므로써 차원 축소하는 것입니다. 정방행렬이 아닌 행렬의 해를 구할 수 있으므로 데이터 측면에서 크기를 줄여줍니다. 구현 방식은 아래 두가지가 있습니다. 

  • Sigular value Decomposition : 중요도 높은 순으로 정렬하여 분해(Σ는 PCA와 동일한 로직)
  • Matrix approximation : 중요도 높은 특이 값만 가지고 다시 복원

특잇값 분해(SVD) 종류

  • thin SVD : Σ에서 대각원소가 아닌 원소들을 제거하고, 그에 대응하는 특이 벡터들을 제거
  • compact SVD : Σ에서 비대각원소 부분과 대각원소 중 0인 부분을 제거하고, 그에 대응하는 특이 벡터들을 제거
  • truncated SVD :   
    • Σ에서 중요도 순으로 몇 개까지 남길 것인지를 결정해서 남길 대각원소들을 제외
    • 그 외의 모든 원소 및 그에 대응하는 특이벡터들을 제거

특잇값 분해(SVD) 종류
특잇값 분해(SVD) 종류