특이값 계산기 - SVD 행렬 분해

SVD 분해를 사용해 임의의 실수 행렬의 특이값을 계산합니다. 행은 줄바꿈, 열은 쉼표로 구분해 입력하면 모든 특이값, 행렬 랭크, 노름을 즉시 확인할 수 있습니다.

행렬을 입력해 특이값 분해(SVD)로 특이값을 계산하세요. 계산기는 내림차순의 모든 특이값과 행렬 속성을 표시합니다.

특이값 계산기 - SVD 행렬 분해
SVD 분해를 사용해 임의의 실수 행렬의 특이값을 계산합니다. 행은 줄바꿈, 열은 쉼표로 구분해 입력하면 모든 특이값, 행렬 랭크, 노름을 즉시 확인할 수 있습니다.

각 행을 한 줄씩 입력하세요. 행 내 요소는 쉼표 또는 공백으로 구분합니다. 모든 행은 같은 열 수를 가져야 합니다.

특이값 계산기 소개

특이값 분해(SVD)는 선형대수에서 가장 중요한 분해 중 하나입니다. 임의의 실수 m×n 행렬 A에 대해 SVD는 A를 A = UΣV^T로 나타냅니다. 여기서 U는 m×m 직교행렬, Σ는 대각선에 음이 아닌 값이 있는 m×n 대각행렬, V는 n×n 직교행렬입니다. Σ의 대각 원소 σ₁ ≥ σ₂ ≥ … ≥ 0이 A의 특이값입니다. 특이값은 원래 행렬에 음수나 복소 구조가 있어도 항상 음이 아닌 실수입니다. 이 값들은 행렬에 의해 유일하게 결정되며, 특이값이 중복될 때는 U와 V의 벡터가 유일하지 않을 수 있습니다. 0이 아닌 특이값의 개수는 행렬의 랭크와 같으며, 이는 열공간(행렬 A가 나타내는 선형 변환의 가능한 모든 출력이 만드는 공간)의 차원을 의미합니다. SVD와 고유값의 관계는 정확합니다. A의 특이값은 대칭 양의 준정부호 행렬 A^T·A(또는 왼쪽 특이벡터에 대해 동등한 A·A^T)의 고유값의 제곱근입니다. 이 계산기는 먼저 A^T·A를 구한 뒤, Jacobi 고유값 알고리즘——Givens 회전이라 불리는 직교 회전의 연속으로 대칭 행렬의 비대각 원소를 0으로 만드는 반복법——을 적용해 고유값을 찾고, 그 제곱근을 취합니다. 가장 큰 특이값 σ₁은 행렬의 스펙트럴 노름(2-노름 또는 연산자 노름이라고도 함)과 같으며, 행렬이 단위 벡터를 얼마나 크게 늘릴 수 있는지를 나타냅니다. Frobenius 노름은 모든 특이값 제곱합의 제곱근이며, 모든 행렬 원소 제곱합의 제곱근과도 같습니다. 이 노름들은 실용적 의미가 있습니다. Frobenius 노름은 행렬의 총 에너지를 나타내는 가장 자연스러운 척도이고, 스펙트럴 노름은 섭동에 대한 민감도를 제어합니다. 조건수 κ = σ₁/σₙ(가장 큰 특이값과 가장 작은 특이값의 비율)는 선형 방정식 풀이에서 행렬의 조건이 얼마나 좋은지 나타냅니다. 조건수가 1에 가까우면 시스템은 잘 조건화되어 있고 정확하게 풀기 쉽습니다. 조건수가 매우 크면——예를 들어 10⁶ 또는 10¹² 이상이면——입력의 작은 섭동이 해에 큰 변화를 일으킬 수 있는 병적 상태를 뜻하며, 과학 계산과 머신러닝에서 수치 불안정의 흔한 원인입니다. SVD는 활용 범위가 매우 넓습니다. 데이터 과학에서 차원 축소의 핵심인 주성분 분석(PCA)은 수학적으로 중심화한 데이터 행렬의 SVD를 계산하는 것과 같습니다. 주성분은 오른쪽 특이벡터 V이고, 각 성분이 설명하는 분산은 해당 특이값의 제곱에 비례합니다. 이미지 처리와 압축에서는 가장 큰 k개의 특이값과 그에 대응하는 벡터만 남기면 이미지 행렬의 rank-k 근사를 얻을 수 있으며, 모든 rank-k 행렬 중 Frobenius 노름 오차를 최소화합니다. 이것이 Eckart-Young 정리입니다. 추천 시스템(협업 필터링)에서는 SVD 기반 행렬 분해로 보지 못한 항목에 대한 사용자 평점을 예측합니다. 공학에서는 유사역행렬 A† = VΣ†U^T가 과잉결정 또는 미결정 시스템에 대한 최소 노름 최소제곱 해를 제공하며, 이는 로보틱스, 제어 이론, 신호 처리에서 중요합니다. 이 계산기는 Jacobi 알고리즘으로 대략 10×10 정도까지의 행렬을 안정적으로 처리합니다. 매우 큰 행렬이나 거의 같은 특이값이 많은 행렬은 부동소수점 반올림 오차의 누적으로 정밀도가 일부 떨어질 수 있지만, 일반적인 입력에서는 최소 6자리 유효숫자 수준의 정확도를 제공합니다.

특이값 예시

흔한 행렬 예시와 그 특이값 및 주요 속성입니다.

행렬특이값속성
[[1, 2], [3, 4]]σ₁ ≈ 5.4650, σ₂ ≈ 0.3660일반적인 2×2 행렬입니다. 랭크 = 2, 조건수 ≈ 14.93.
[[1, 0, 0], [0, 2, 0], [0, 0, 3]]σ₁ = 3, σ₂ = 2, σ₃ = 1대각 행렬입니다. 특이값은 대각 원소의 절댓값과 같습니다.
[[1, 2, 3], [4, 5, 6]]σ₁ ≈ 9.5080, σ₂ ≈ 0.7729랭크 2인 2×3 행렬입니다. SVD는 min(2,3)=2개의 특이값을 줍니다. 여기서는 둘 다 0이 아닙니다.
[[1, 2], [2, 4]]σ₁ = 5, σ₂ = 0랭크 결손 행렬(2행 = 2 × 1행)입니다. 특이값 중 하나는 0입니다.

특이값 계산기 사용 방법

  1. 텍스트 영역에 행렬을 입력하세요. 각 행은 한 줄씩, 행 내 값은 쉼표 또는 공백으로 구분합니다.
  2. 모든 행의 원소 개수가 같은지 확인하세요. 행 길이가 맞지 않으면 계산기가 파싱 오류를 표시합니다.
  3. 특이값 계산을 클릭하세요. 도구가 A^T·A를 계산하고 Jacobi 고유값 알고리즘을 적용해 모든 특이값을 내림차순으로 표시합니다.
  4. 추가 속성을 확인하세요: 랭크(0이 아닌 특이값의 개수), Frobenius 노름, 스펙트럴 노름(σ₁), 그리고 행렬이 full column rank일 때의 조건수(σ₁/σₙ)입니다.
  5. 예시 버튼을 사용해 미리 채워진 행렬을 불러오고, 서로 다른 행렬 구조가 특이값에 어떤 영향을 주는지 살펴보세요.

특이값 FAQ

특이값이란 무엇인가요?
특이값은 선형 변환의 크기를 나타내는 음이 아닌 스칼라입니다. 행렬 A에 대해 특이값은 A^T·A의 고유값의 제곱근입니다. 이를 통해 A가 방향별로 벡터를 얼마나 늘리거나 줄이는지 알 수 있으며, 가장 큰 특이값은 최대 늘림 비율, 가장 작은 특이값은 최소 늘림 비율을 줍니다.
특이값은 고유값과 어떻게 다른가요?
고유값은 정방행렬에만 정의되며 음수나 복소수가 될 수 있습니다. 특이값은 임의의 행렬(직사각형 포함)에 대해 정의되며 항상 음이 아닌 실수입니다. 대칭 양의 정부호 행렬에서는 특이값과 고유값이 일치합니다. 일반적으로 A의 특이값은 A^T·A의 고유값의 제곱근입니다.
조건수는 무엇을 알려주나요?
조건수(σ₁/σₙ)는 민감도를 측정합니다. 조건수가 작고(1에 가까울수록) 행렬은 잘 거동하며 선형 방정식 Ax = b를 정확하게 풀 수 있습니다. 조건수가 크면(>10⁶) 거의 특이 상태를 뜻하며, 행렬은 거의 랭크 결손이어서 반올림 오차의 수치 증폭으로 해가 신뢰할 수 없을 수 있습니다.
왜 특이값은 항상 음이 아닌가요?
특이값은 σᵢ = √λᵢ로 정의되며, λᵢ는 A^T·A의 고유값입니다. A^T·A는 양의 준정부호 행렬이므로(모든 고유값 ≥ 0) 제곱근은 항상 음이 아닌 실수가 됩니다. 이는 모든 실수 행렬 또는 복소수 행렬 A에 대해 성립합니다.
SVD와 PCA의 관계는 무엇인가요?
주성분 분석(PCA)은 중심화한 데이터 행렬의 SVD를 계산하는 것과 수학적으로 같습니다. 오른쪽 특이벡터(V의 열)가 주방향(주성분)입니다. 대응하는 특이값은 그 방향의 표준편차에 비례하며, 정확히는 σᵢ/√(m-1)이 m행 데이터 행렬에서 i번째 주성분의 표준편차입니다.
이 계산기는 직사각형 행렬도 처리하나요?
네. SVD는 m > n, m = n, m < n 여부와 관계없이 모든 실수 m×n 행렬에 대해 정의됩니다. m×n 행렬의 특이값 개수는 min(m, n)입니다. m > n이면 비영(0이 아닌) 특이값은 최대 n개이고, m < n이면 최대 m개입니다.