Singular Value Decomposition
A general matrix with rank can be decomposed as
where and are square orthonormal matrices whose columns are known respectively as the left singular vectors and right singular vectors of , whereas is a block matrix with having positive ordered diagonal entries known as the singular values of , such that for and , .The SVD of can also be rewritten in compact-form, such that
where and .
Intuition
We can geometrically interpret SVD by considering what each component of the decomposition does when considering as a linear transformation. Take a look at this illustration:
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, shapes.geometric, decorations.markings, calc}
\begin{document}
\begin{tikzpicture}[scale=1.2, transform shape]
% Matrix V^T
\begin{scope}[shift={(1,0)}]
\draw[thick] (-1.5, 0) -- (1.5, 0);
\draw[thick] (0, 1.5) -- (0, -1.5);
\draw[thick, fill=none] (0,0) circle (1) node[scale=1.75, teal, yshift=1.5cm, xshift=-1cm]{$V^T$};
\draw[->, thick] (0, 0) -- (0.3, 0.95) node[above]{$\vec{v}_2$};
\draw[->, thick] (0, 0) -- (0.95, -0.3) node[right]{$\vec{v}_1$};
\node (vt) at (0, -1.5){};
\end{scope}
% Matrix Sigma
\begin{scope}[shift={(-3,0)}]
\draw[thick] (-1.5, 0) -- (1.5, 0);
\draw[thick] (0, -1.5) -- (0, 1.5);
\draw[thick, fill=none] (0,0) circle (1) node[scale=1.75, purple, yshift=1.5cm, xshift=-1cm]{$\Sigma$};
\draw[->, thick, teal] (0, 0) -- (0, 1) node[above right]{$\vec{e}_2$};
\draw[->, thick, teal] (0, 0) -- (1, 0) node[above right]{$\vec{e}_1$};
\node (s) at (0, -1.5){};
\end{scope}
% Matrix U
\begin{scope}[shift={(-7,0)}]
\draw[thick] (-1.5, 0) -- (1.5, 0);
\draw[thick] (0, -1.5) -- (0, 1.5);
\draw[thick, fill=none] (0,0) ellipse (1 and 0.65) node[scale=1.75, green, yshift=1.5cm, xshift=-1cm]{$U$};
\draw[->, thick, purple] (0, 0) -- (0, 0.65) node[above right]{$\sigma_2\vec{e}_2$};
\draw[->, thick, purple] (0, 0) -- (1, 0) node[above right]{$\sigma_1\vec{e}_1$};
\node (u) at (0, -1.5){};
\end{scope}
\begin{scope}[shift={(-11,0)}]
\draw[thick] (-1.5, 0) -- (1.5, 0);
\draw[thick] (0, -1.5) -- (0, 1.5);
\draw[thick, fill=none, rotate=45] (0,0) ellipse (1 and 0.65) node[scale=1.75, yshift=1.5cm, xshift=0.65cm, rotate=-45]{$A=$};
\draw[->, thick, green, rotate=45] (0, 0) -- (0, 0.65) node[above left, rotate=-45]{$\sigma_2\vec{u}_2$};
\draw[->, thick, green, rotate=45] (0, 0) -- (1, 0) node[above right, rotate=-45]{$\sigma_1\vec{u}_1$};
\node (a) at (0, -1.5){};
\end{scope}
% Arrows
\draw[->, thick, teal] (vt.south west) to [out=-150,in=-30] (s.south east);
\draw[->, thick, purple] (s.south west) to [out=-150,in=-30] (u.south east);
\draw[->, thick, green] (u.south west) to [out=-150,in=-30] (a.south east);
\end{tikzpicture}
\end{document}We can see from the figure above that there are 3 transformations that take place:
- Here, transforms each vector such that they return to standard basis (since we are performing an operation on the eigenvectors of A). The singular vector with the largest lands on the x-axis, the vector with the second-largest lands on the y-axis, and so on.
- Then, stretches or compresses the vectors by factors corresponding to the roots of their eigenvalues. Additionally, may also add or remove dimensionality.
- Finally, rotates the standard basis vectors to align with the left singular vectors.
Additionally, the full SVD is connected to the compact SVD (and therefore outer product SVD) as follows:
Moreover, the full SVD requires running Gram-Schmidt twice to compute and , and is non-square. However, and are invertible, and there is characterization of null spaces.
Properties
(Condition Number) For ,
(Squared Frobenius Norm) .
(Spectral Norm) .
(Nuclear Norm)
Since