특잇값 분해

by Ariel Daley

특잇값 분해의 정의와 그 유용성

특잇값분해(Singular Value Decomposition; SVD)는 임의의 실수 행렬을 세 개의 행렬 곱으로 표현함으로써, 행렬에 담긴 다양한 정보를 구조적으로 파악할 수 있게 해 주는 강력한 기법이다. 특히, 차원 축소, 데이터 압축, 노이즈 제거 등 공학·데이터 과학에서 폭넓게 활용된다.

정의 1. (특잇값분해)

크기가 \(m \times n\)인 임의의 실수 행렬 \(A\)에 대하여, 다음을 만족하는 분해가 존재한다. \[ A \;=\; U\,\Sigma\,V^\top . \] 여기서 우변의 각 인수는 다음과 같은 행렬이다.

  • \(U\)는 \(m \times m\) 직교행렬(orthogonal matrix)이다. 즉, \(U^\top U = I_m\)을 만족시킨다.
  • \(V\)는 \(n \times n\) 직교행렬이며, \(V^\top V = I_n\)을 만족시킨다.
  • \(\Sigma\)는 대각성분이 특잇값(singular value)이라고 불리는 음이 아닌 실수들로 구성된 \(m \times n\) 크기의 직사각행렬이다. 대각선 이외의 성분은 0이다.

이 분해를 특잇값분해(SVD)라고 부르며, \(\Sigma\)의 대각 원소들은 행렬 \(A\)의 특잇값들이 된다.

이처럼 임의의 행렬 \(A\)를 세 행렬 \(U, \Sigma, V^\top\)로 분해하면, 다음과 같은 유용한 성질들을 얻을 수 있다.

  • 기하학적 해석: 행렬 \(A\)는 공간을 축소·확대·회전시킬 수 있는 선형변환으로 볼 수 있다. SVD에 따르면, \(A\)는 먼저 \(V\)에 의해 회전(또는 반사)된 뒤, \(\Sigma\)를 통해 각 축 방향으로 스케일링(확대 혹은 축소)을 수행하고, 마지막으로 \(U\)에 의해 다시 회전(또는 반사)되는 과정으로 해석할 수 있다.
  • 차원 축소: 특잇값들이 큰 순서대로 몇 개의 축만 선택하여, 행렬의 가장 중요한 정보를 보존하면서 차원을 축소할 수 있다(=핵심적인 특잇값에 대응하는 축을 남긴다). 이를 통해 데이터 압축, 잡음 제거 등이 가능하다.
  • 최적 근사: 특정 차원(랭크) 이하로 제한된 행렬 중, 원래 행렬과의 차이가 최소가 되는 근사를 간단히 구할 수 있다(저랭크 근사). 특잇값이 큰 축은 중요 정보를, 작은 축은 노이즈나 세부 정보 등을 반영한다.
  • 수치적 안정성: SVD는 행렬 계산에서 안정적 알고리즘으로 잘 알려져 있으며, 고윳값분해(eigen-decomposition) 등을 일반화한 형태라서, 다양한 행렬 해석 문제에 적용 가능하다.

이러한 특징 덕분에, SVD는 머신러닝·신호처리·통계학·문서 처리 등에서 핵심 알고리즘으로 자주 사용된다. 예를 들어, 텍스트 처리에서 LSA(Latent Semantic Analysis)는 SVD를 이용해 문서-단어 행렬을 저차원으로 투영함으로써, 문서의 의미나 주제를 추출하게 된다. 또한, 이미지 압축에서 SVD의 저랭크 근사를 이용해 높은 압축률을 얻는 기법도 유용하게 쓰인다.

보기 1.

\(A\)가 2×2 행렬일 때, \[ A = U \Sigma V^\top \] 로 분해한다면, \(\Sigma\)는 2×2 대각 행렬이며, 대각원소 \(\sigma_1\ge \sigma_2\ge 0\)이 특잇값을 이룬다. 이때, \(\sigma_1,\) \(\sigma_2\)가 행렬 \(A\)의 핵심 스케일링 인자를 결정하고, 직교행렬 \(U\)와 \(V\)는 각각 변환 전·후의 회전(또는 반사)을 나타낸다.

결국, SVD는 임의의 행렬을 가장 기초적인 선형 변환 세 단계(회전-스케일링-회전)로 나타내어, 행렬이 표현하는 선형변환의 구조를 간결하면서도 정보 손실 없이 분석할 수 있도록 한다. 이는 선형대수학에서 고유값분해가 가지는 의미를, 직사각행렬 전반으로 확장한 결정적 기법이라 할 수 있다.

행렬 분해를 통한 데이터 해석

특잇값분해(SVD)는 행렬을 회전-스케일링-회전 형태로 분해함으로써, 복잡한 데이터 집합에 담긴 핵심 정보를 효과적으로 추출하고 분석하는 수단을 제공한다. 실제로 대규모 행렬(예컨대, 문서-단어 행렬, 사용자-아이템 평점 행렬 등)을 다룰 때, 행렬 분해 기법은 데이터 해석을 단순화하거나 잡음을 제거하는 등 다양한 응용을 가능케 한다.

대표적인 예로, SVD를 이용하여 행렬 \(A\)를 \[ A = U\Sigma V^\top \] 로 분해하고, 가장 큰 특잇값 몇 개만 골라 대각행렬 \(\Sigma\)를 저랭크(낮은 계수) 형태로 근사함으로써, 저차원에서 데이터의 주된 변동 방향을 파악할 수 있다. 이런 방식으로 얻는 저랭크 근사(Low-rank Approximation)는 다음과 같은 유용성을 갖는다.

  • 차원 축소: 행렬의 크기가 클 때, 상위 특잇값에 대응하는 일부 축만 사용하면 주된 정보(분산이 큰 방향)를 유지하면서 데이터 차원을 축소할 수 있다. 예를 들어, 문서 분석에서 수천 개 이상의 단어로 구성된 공간에서, 수백 차원 이하로 줄인 후에도 유사한 분류 성능을 낼 수 있다.
  • 노이즈 제거: 작은 특잇값 축에 대응하는 부분은 잡음이나 세부적 변동일 가능성이 크다. 해당 축을 제거하거나 줄임으로써, 중요한 구조를 남기고 잡음을 제거하는 효과를 얻는다. 이미지 압축, 신호처리 등에서 SVD 기반 기법이 이러한 방법으로 활용된다.
  • 군집 및 특성 추출: 행렬을 저랭크 근사하면, 여러 개의 상위 특잇값과 그에 대응하는 U, V 행렬의 열벡터가 각각 “데이터가 가장 많이 퍼져 있는 방향”을 나타낸다. 이들은 잠재적 특성(latent feature)으로 해석될 수 있으며, 데이터 군집(Clustering)이나 PCA(주성분분석)와도 직결된다.

정리 1. (최적 저랭크 근사)

\(A\)가 \(m \times n\) 행렬이고, \(\displaystyle r < \min(m,n)\)이라 하자. 이때, 랭크가 \(r\) 이하인 모든 행렬 중 \(\|A - B\|\)가 최소가 되는 \(B\)는, SVD로부터 얻는 상위 \(r\)개의 특잇값과 대응하는 성분만을 남긴 \(\tilde{A}\)이다. 즉, \[ \tilde{A} = U \,\tilde{\Sigma}\, V^\top \] 에서 \(\tilde{\Sigma}\)는 상위 \(r\)개의 특잇값만 남기고 나머지를 0으로 만드는 대각행렬이다. 이를 최적 저랭크 근사라 부른다.

이 정리는 데이터 분석에서 자주 쓰이는데, 예를 들어 다음과 같은 상황에서 유용하다.

  • 문서-단어 행렬의 저랭크 근사: 같은 문서라도 수많은 단어로 표현되는데, 실제로는 몇 가지 주된 주제(topic)가 글 전체를 특징짓는다. SVD를 적용하면, 상위 특잇값 축을 통해 주요 주제를 효과적으로 추출한다.
  • 이미지 처리: 이미지를 행렬로 표현하고, SVD로 분해한 뒤 상위 특잇값만 남겨서 복원하면, 잡음이 줄어든 상태로 이미지를 근사하게 된다(이미지 압축 및 노이즈 제거).
  • 추천 시스템: 사용자-아이템 평점 행렬을 SVD로 분해하면, 사용자 취향과 아이템 특성의 저차원 표현을 얻어, 개인화 추천을 수행하기 쉽다.

보기 2.

예를 들어, 이미지(흑백)를 \(m \times n\) 행렬로 표현하고 SVD: \[ A = U\,\Sigma\,V^\top \] 를 구한다. \(\Sigma\)에서 상위 20개의 특잇값만 남기고 나머지를 0으로 만들어 복원한 이미지는 원본보다 랭크가 낮아져, 조금 흐릿해질 수 있지만 잡음이 줄어드는 효과도 있다. 저장 비용도 크게 절감된다.

이처럼 SVD에 기반한 행렬 분해는 데이터 내 잠재적 패턴을 밝히고, 차원 축소 및 노이즈 제거 등 다양한 작업을 효율적으로 수행하기 위한 이론적 기반을 제공한다. 선형대수학적 접근을 통해, 복잡한 데이터를 단순한 구조(특잇값과 직교행렬)로 이해하고, 문제 해결 전략을 합리적으로 수립할 수 있다는 점이 큰 장점이다.