A short blog on discovering the Singular-Value Decomposition (SVD) method for matrix factorization.

**Singular-Value Decomposition**

The Singular-Value Decomposition, or SVD for short, is a matrix decomposition method for reducing a matrix to its constituent parts in order to make certain subsequent matrix calculations simpler.

A = U . Sigma . V^T

where, A is the real *m x n* matrix that we wish to decompose, U is an *m x m* matrix, Sigma (often represented by the uppercase Greek letter Sigma Σ) is an *m x n* diagonal matrix, and V^T is the transpose of an *n x n* matrix where T is a superscript.

**Calculate Singular-Value Decomposition**

The SVD can be calculated by calling the svd() function.

The function takes a matrix and returns the U, Sigma, and V^T elements. The Sigma diagonal matrix is returned as a vector of singular values. The V matrix is returned in a transposed form, e.g. V.T.

# Singular-value decomposition from numpy import array from scipy.linalg import svd # define a matrix A = array([[1, 2], [3, 4], [5, 6]]) print(A) # SVD U, s, V = svd(A) print(U) print(s) print(V)

Output in Jupyter Notebook: [[1 2] [3 4] [5 6]] [[-0.2298477 0.88346102 0.40824829] [-0.52474482 0.24078249 -0.81649658] [-0.81964194 -0.40189603 0.40824829]] [9.52551809 0.51430058] [[-0.61962948 -0.78489445] [-0.78489445 0.61962948]]