특이값분해 (Singular Value Decomposition)
쉽게 풀면
복잡하게 얽힌 데이터 표(행렬)를 이해하기 쉬운 조각으로 나눈다고 생각해 봅시다. 특이값분해(Singular Value Decomposition, SVD)는 어떤 행렬이든 세 개의 단순한 행렬의 곱으로 다시 쓸 수 있다는 원리입니다. 비유하자면 복잡한 도장 하나를 "방향을 바꾸는 도장", "크기만 늘리거나 줄이는 도장", "다시 방향을 바꾸는 도장" 세 개를 순서대로 찍은 것과 같은 효과로 표현하는 것입니다. 이때 "크기를 늘리는 정도"에 해당하는 숫자들이 특이값인데, 이 값이 큰 순서대로 정보의 중요도가 매겨지기 때문에 중요한 부분만 남기고 나머지를 버리면 데이터를 압축하거나 잡음을 제거할 수 있습니다.
왜 중요한가
특이값분해는 행렬의 구조를 가장 근본적인 형태로 드러내는 도구라서, 데이터 압축·잡음 제거·차원 축소가 필요한 거의 모든 분야에서 계산의 기반으로 쓰입니다. 추천시스템, 자연어처리의 잠재의미분석, 신호처리, 통계학의 주성분분석 등 서로 다른 응용 분야가 결국 같은 SVD 계산으로 귀결되는 경우가 많아, 여러 논문에서 방법론적으로 공유되는 핵심 개념입니다.
논문에서는 이렇게 쓰입니다
이 문장은 사용자-상품 평점 데이터를 특이값분해로 분해해서, 겉으로 드러나지 않는 취향 요인들을 뽑아내고 이를 추천 시스템에 활용했다는 뜻입니다. 이미지 압축, 잡음 제거, 주성분분석의 계산 방법으로도 특이값분해가 널리 쓰입니다.
자연어처리 분야에서 텍스트의 잠재적 의미 구조를 추출할 때 SVD가 쓰이는 방식을 보여주는 문장이다.
신호처리·기계진단 분야에서 SVD를 잡음 제거 및 신호 복원에 활용하는 사례를 나타낸다.
조금 더 깊게 보면
특이값분해에서 상위 몇 개의 특이값과 대응하는 벡터만 남기고 나머지를 버리는 절단된 SVD(truncated SVD)는 원래 행렬을 가장 잘 근사하는 저랭크 행렬을 만드는 방법으로 알려져 있으며, 이 성질 덕분에 차원 축소와 압축에 이론적 근거를 제공합니다. 공분산 행렬에 SVD를 적용하면 주성분분석과 사실상 동일한 결과를 얻을 수 있어, 두 개념이 서로 다른 이름으로 같은 계산을 가리키는 경우가 많다는 점도 논문을 읽을 때 참고할 만합니다.
주의할 점
특이값분해는 정사각형이 아닌 직사각형 행렬에도 항상 적용할 수 있다는 점에서, 정사각 행렬에서만 정의되는 고유값과 고유벡터보다 더 일반적인 개념입니다. 특이값의 개수 중 0이 아닌 값의 개수는 그 행렬의 행렬의 랭크와 같습니다.