특이값 분해(SVD)
특이값 분해의 정의
- 특이값 분해(Singular Value Decomposition, SVD)는 임의의 m×n차원의 행렬 A에 대하여 다음과 같이 행렬을 분해할 수 있는 행렬 분해 방법 중 하나이다.
A=UΣVT
- 여기서 각 행렬은 다음과 같은 성질을 가진다.
- U: m×m 직교행렬(UTU=UUT=I)로, 열벡터들을 좌특이벡터(left singular vector) 라고 한다. U의 열벡터들은 AAT의 고유벡터이다.
- V: n×n 직교행렬(VTV=VVT=I)로, 열벡터들을 우특이벡터(right singular vector) 라고 한다. V의 열벡터들은 ATA의 고유벡터이다.
- Σ: m×n 직사각 대각행렬로, 대각 성분 σi가 A의 특이값(singular value) 이다. 특이값은 항상 0 이상이며 보통 σ1≥σ2≥⋯≥σr>0 순으로 내림차순 정렬한다.
- 특이값 σi는 ATA (또는 AAT)의 0이 아닌 고유값 λi에 대하여 σi=λi 이다. 0이 아닌 특이값의 개수 r은 행렬 A의 랭크(rank) 와 같다.
- 고유값 분해와 달리 특이값 분해는 정방행렬이 아니거나 대각화가 불가능한 행렬을 포함하여 모든 행렬에 대해 항상 존재한다.
- 기하학적으로 A가 벡터에 작용하는 선형변환은 회전(또는 반사) VT → 축 방향 스케일링 Σ → 회전(또는 반사) U 의 세 단계로 분해된다.
- 외적의 합으로 나타내면 다음과 같이 쓸 수 있고, 큰 특이값에 해당하는 항만 남기면 A의 저랭크 근사가 된다.
A=i=1∑rσiuiviT
참고