특잇값 계산기 쉽게 이해하기 — 개념과 원리
이 계산기는 정사각이든 직사각이든 모든 행렬의 특잇값을 큰 것부터 차례로 구합니다. 2-노름, 가장 작은 특잇값, 계수(rank), 조건수, 성분 제곱합(프로베니우스 노름의 제곱)도 보여 줍니다. 선형대수, 수치해석, 데이터 과학(주성분분석, 저계수 근사), 제어공학에 씁니다.
계산 방법
- 특잇값 σ₁ ≥ σ₂ ≥ … ≥ σ_k ≥ 0(k = min(m, n))은 AᵀA(또는 AAᵀ)의 고윳값의 제곱근입니다.
- ‖A‖₂ = σ₁로, 가장 크게 늘어나는 배율입니다.
- 계수 = 0이 아닌 특잇값의 개수
- 조건수 = σ₁ ÷ σ_k(정사각 또는 완전 계수 행렬)
- Σσᵢ² = ‖A‖F² = 모든 성분의 제곱합
값은 단측 야코비 특잇값 분해로 구하며, 유효숫자 약 15자리까지 정확합니다.
원리
모든 행렬은 단위구를 타원체로 보냅니다. 특잇값은 그 타원체의 반축 길이, 즉 A가 주된 방향으로 공간을 얼마나 늘리는지를 나타냅니다. AᵀA가 대칭이고 양의 준정부호이므로 특잇값은 고윳값과 달리 모든 행렬에 존재하고 항상 0 이상의 실수입니다. 가장 큰 특잇값은 단위벡터가 늘어날 수 있는 최대 배율이고, 0인 특잇값은 어떤 방향이 완전히 납작해졌다는 뜻이라 계수가 줄어듭니다. 가장 큰 값과 가장 작은 값의 비가 크면 행렬이 거의 특이해 풀이에서 오차가 커집니다.
예제 풀이
기본 행렬은 A = [3 2 2; 2 3 −2](2 × 3)입니다.
- 더 작은 곱 AAᵀ = [17 8; 8 17](2 × 2)을 씁니다.
- 고윳값은 (17 − λ)² = 64를 풀어 λ = 25, 9입니다.
- 특잇값은 √25 = 5, √9 = 3이므로 5, 3입니다.
- ‖A‖₂ = 5, 가장 작은 특잇값 3, 계수 2, 조건수 5 ÷ 3 ≈ 1.66667입니다.
- 검산: 5² + 3² = 34 = 9 + 4 + 4 + 4 + 9 + 4로 성분 제곱합과 같습니다.
결과 해석
조건수가 1에 가까우면 다루기 좋은 행렬이고, 수천 이상이면 입력의 작은 오차가 해에서 크게 불어날 수 있습니다. 0이거나 σ₁에 비해 아주 작은 특잇값은 계수 부족을 드러냅니다. 데이터 분석에서는 특잇값의 제곱이 각 방향이 전체 변동 중 얼마를 담는지 보여 주므로, 큰 특잇값 몇 개만 남겨 자료를 압축하기도 합니다.
흔한 실수
- 특잇값과 고윳값을 혼동하는 경우(대칭행렬에서만 절댓값이 같습니다)
- 음수 특잇값을 기대하는 경우(항상 0 이상입니다)
- 1e−16 같은 아주 작은 값을 0이 아닌 값으로 읽는 경우(반올림 잡음입니다)
- 계수가 부족한 행렬의 조건수를 쓰는 경우(무한대입니다)
자주 묻는 질문
특잇값과 고윳값은 어떻게 다른가요?
고윳값은 정사각행렬에만 정의되고 음수나 복소수일 수 있지만, 특잇값은 모든 행렬에 있고 음수가 아닙니다.
주성분분석에서는 특잇값을 어떻게 쓰나요?
자료 행렬을 중심화한 뒤 그 특잇값이 각 주성분 방향의 퍼짐을 나타냅니다.
조건수는 무엇을 알려 주나요?
Ax = b를 풀 때 입력의 상대오차가 해에서 대략 몇 배까지 커질 수 있는지를 알려 줍니다.
출처: Wolfram MathWorld, "Singular Value" · J. Demmel, UC Berkeley Math 221, Lecture 3 (Fall 2011)