Topics

Singular Value Decomposition (SVD) factorizes any real/complex matrix (size ) into three matrices representing rotation, scaling, rotation:

  • : orthogonal matrix (cols are called left singular vectors)
  • : diagonal matrix (non-negative singular values in descending order)
  • : orthogonal matrix (rows are called right singular vectors)

Intuitively, rotates (or reflects) the input space into a “principal” coordinate system; scales each coordinate by ; and rotates it to the output space.

Key properties:

  • Works for rectangular matrices (unlike eigendecomposition)
  • Singular values reveal matrix rank
  • Stable numerical computation via iterative methods
from numpy import array, diag
from numpy import diag
from scipy.linalg import svd
 
A = array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
 
# factorize
U, s, V = svd(A)
 
# reconstruct
Sigma = diag(s)
B = U @ Sigma @ V
 
print(np.allclose(A, B))

Applications:

  • Dimensionality reduction (PCA)
  • Data compression (low-rank approximation)
  • Solving linear systems (pseudoinverse)
  • Recommender systems (collaborative filtering)