The singular value decomposition: A fundamental technique in multivariate data analysis
This post was kindly contributed by The DO Loop - go there to comment and to read the full post. |
The singular value decomposition (SVD) could be called the “billion-dollar algorithm” since it provides the mathematical basis for many modern algorithms in data science, including text mining, recommender systems (think Netflix and Amazon), image processing, and classification problems.
Although the SVD was mathematically discovered in the late 1800s, computers have made the SVD an indispensable tool in computational statistics and data science.
SVD: A fundamental theorem of linear algebra
Mathematically, the singular value decomposition is a fundamental theorem of linear algebra. )You could argue that it is THE fundamental theorem, but Gil Strang names a different result.)
The singular value decomposition says that every n x p matrix can be written as the product of three matrices: A = U Σ V^{T} where
- U is an orthogonal n x n matrix
- Σ is a diagonal n x p matrix. In practice, the diagonal elements are ordered so that Σ_{ii} ≥ Σ_{jj} for all i < j.
- V is an orthogonal p x p matrix and V^{T} represents a matrix transpose.
The SVD represents the essential geometry of a linear transformation. It tells us that every linear transformation is a composition of three fundamental actions. Reading the equation from right to left:
- The matrix V represents a rotation or reflection of vectors in the p-dimensional domain.
- The matrix Σ represents a linear dilation or contraction along each of the p coordinate directions. If n ≠ p, this step also canonically embeds (or projects) the p-dimensional domain into (or onto) the n-dimensional range.
- The matrix U represents a rotation or reflection of vectors in the n-dimensional range.
Thus the SVD specifies that every linear transformation is fundamentally a rotation or reflection, followed by a scaling, followed by another rotation or reflection. The Strang (1993) article about the fundamental theorem of linear algebra includes the following geometric interpretation of the singular value decomposition of a 2 x 2 matrix:
The diagram shows that the transformation induced by the matrix A (the long arrow across the top of the diagram) is equivalent to the composition of the three fundamental transformations, namely a rotation, a scaling, and another rotation.
SVD: The fundamental theorem of multivariate data analysis
Because of its usefulness, the singular value decomposition is a fundamental technique for multivariate data analysis.
A common goal of multivariate data analysis is to reduce the dimension of the problem by choosing a small linear subspace that captures important properties of the data. The SVD is used in two important dimension-reducing operations:
- Low-rank approximations: Recall that the diagonal elements of the Σ matrix (called the singular values) in the SVD are computed in decreasing order. The SVD has a wonderful mathematical property: if you
choose some integer k ≥ 1 and let D be the diagonal matrix formed by replacing all singular values after the k_th by 0, then then matrix U D V^{T} is the best rank-k approximation to the original matrix A. - Principal components analysis: The principal component analysis is usually presented in terms of eigenvectors of a correlation matrix, but you can show that the principal component analysis follows directly from the SVD. (In fact, you can derive the eigenvalue decomposition of a matrix, from the SVD.)
The principal components of A^{T} A are the columns of the V matrix; the scores are the columns of U.
Dimension reduction is achieved by truncating the number of columns in U, which results in the best rank-k approximation of the data.
Compute the SVD in SAS
In SAS, you can use the SVD subroutine in SAS/IML software to compute the singular value decomposition of any matrix. To save memory, SAS/IML computes a “thin SVD” (or “economical SVD”), which means that the U matrix is an n x p matrix. This is usually what the data analyst wants, and it saves considerable memory in the usual case where the number of observations (n) is much larger than the number of variables (p). Technically speaking, the U for an “economical SVD” is suborthogonal: U^{T} U is the identity when n ≥ p and
U U^{T} is the identity when n ≤ p.
As for eigenvectors, the columns of U and V are not unique, so be careful if you compare the results in SAS to the results from MATLAB or R. The following example demonstrates a singular value decomposition for a 3 x 2 matrix A. For the full SVD, the U matrix would be a 3 x 3 matrix and Σ would be a 3 x 2 diagonal matrix. For the “economical” SVD, U is 3 2 and Σ is a 2 x 2 diagonal matrix, as shown:
proc iml; A = {0.3062 0.1768, -0.9236 1.0997, -0.4906 1.3497 }; call svd(U, D, V, A); /* A = U*diag(D)*V` */ print U[f=6.3], D[f=6.3], V[f=6.3]; |
Notice that, to save memory, only the diagonal elements of the matrix Σ are returned in the vector D. You can explicitly form Σ = diag(D) if desired.
Geometrically, the linear transformation that corresponds to V rotates a vector in the domain by about 30 degrees, the matrix D scales it by 2 and 0.5 in the coordinate directions, and U inserts it into a three-dimensional space, and applies another rotation.
My next blog post shows how the SVD enables you to reduce the dimension of a data matrix by using a
low-rank approximation, which has applications to image compression and de-noising.
The post The singular value decomposition: A fundamental technique in multivariate data analysis appeared first on The DO Loop.
This post was kindly contributed by The DO Loop - go there to comment and to read the full post. |