Eckart–Young–Mirsky and low-rank approximation via truncated SVD

Background notes · Foundations

In one paragraph

The SVD writes any matrix as a sum of rank-1 pieces, \mathbf A = \sum_{i=1}^r \sigma_i \mathbf u_i \mathbf v_i^\top, ordered by decreasing singular value. Truncating that sum after the top k terms gives a rank-k matrix \mathbf A_k. The Eckart–Young–Mirsky theorem says this truncation is not just a reasonable rank-k approximation — it is provably the best one, in both the spectral (2-)norm and the Frobenius norm, among all rank-k matrices. This is the fact underneath every use of “keep the top few singular values/eigenvalues and drop the rest” as a compression or denoising step, including the HaoChen et al. spectral-contrastive-loss argument in papers/2021-haochen-spectral-contrastive (minimising \lVert \bar A - FF^\top\rVert_F^2 is exactly this problem, so its minimiser is the top eigenvectors by Eckart–Young).

Setup and notation

Symbol Meaning
\mathbf A \in \mathbb{R}^{n\times p} the matrix being approximated
r = \operatorname{rank}(\mathbf A) rank of \mathbf A
\sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_r > 0 singular values of \mathbf A, decreasing
\mathbf u_i, \mathbf v_i left/right singular vectors, \mathbf A = \sum_i \sigma_i \mathbf u_i \mathbf v_i^\top
\mathbf A_k = \sum_{i=1}^k \sigma_i \mathbf u_i \mathbf v_i^\top the rank-k truncated SVD
\lVert\mathbf A\rVert_F Frobenius (Hilbert–Schmidt) norm
\lVert\mathbf A\rVert_2 spectral norm (2-norm), the induced operator norm

Matrix norms: two ways to measure “how far apart”

Comparing \mathbf A to an approximation \mathbf B needs a notion of distance \lVert \mathbf A - \mathbf B\rVert between matrices. Two norms matter here:

Frobenius norm — the Euclidean norm applied entrywise:

\lVert \mathbf A \rVert_F = \left(\sum_{i,j} a_{ij}^2\right)^{1/2} = \left(\operatorname{tr}(\mathbf A^\top \mathbf A)\right)^{1/2}.

It is invariant under multiplying by an orthogonal matrix (\lVert \mathbf A\mathbf U\rVert_F = \lVert \mathbf A\rVert_F for orthogonal \mathbf U, by cyclicity of the trace), and in terms of the SVD it is simply

\lVert \mathbf A\rVert_F = \left(\sum_{i=1}^r \sigma_i^2\right)^{1/2}.

Spectral norm — the operator norm induced by the vector 2-norm, \lVert \mathbf A\rVert_2 = \sup_{\mathbf x \ne 0} \lVert \mathbf A\mathbf x\rVert_2 / \lVert \mathbf x\rVert_2. This turns out to equal the largest singular value, \lVert \mathbf A\rVert_2 = \sigma_1: the most a unit vector can be stretched by \mathbf A is exactly the top singular value, achieved along the corresponding right singular vector \mathbf v_1.

So the Frobenius norm sees all the singular values (it is their \ell_2 norm), while the spectral norm only sees the largest one — the difference matters below, where the two norms give different-looking but equally clean answers for the approximation error.

Eckart–Young–Mirsky theorem

For either \lVert \cdot \rVert_2 or \lVert \cdot \rVert_F, \lVert \mathbf A - \mathbf A_k \rVert \le \lVert \mathbf A - \mathbf B \rVert \quad\text{for every rank-}k\text{ matrix } \mathbf B, and the truncated SVD’s error has a closed form: \lVert \mathbf A - \mathbf A_k \rVert = \begin{cases} \sigma_{k+1} & \text{2-norm} \\[4pt] \left(\sum_{i=k+1}^r \sigma_i^2\right)^{1/2} & \text{Frobenius norm.} \end{cases}

In words: among every matrix of rank k — not just SVD truncations — none gets closer to \mathbf A than \mathbf A_k does, in either norm. The error is exactly the part of the spectrum that got thrown away: the next singular value for the 2-norm, or the root-sum-square of all the discarded singular values for the Frobenius norm.

Why it’s true (2-norm case)

The proof is a clean pigeonhole argument. Let \mathbf B be any rank-k matrix (competing against \mathbf A_k). Its null space \mathcal N(\mathbf B) \subset \mathbb{R}^p has dimension p - k by rank–nullity. Consider the span of the first k+1 right singular vectors of \mathbf A, \mathcal C(\mathbf V_{k+1}), which has dimension k+1. Since

\dim \mathcal N(\mathbf B) + \dim \mathcal C(\mathbf V_{k+1}) = (p-k) + (k+1) = p + 1 > p,

these two subspaces of \mathbb{R}^p must intersect: there is a unit vector \mathbf w that is simultaneously in \mathbf B’s null space and a combination of \mathbf A’s top k+1 right singular vectors, \mathbf w = \sum_{i=1}^{k+1} w_i \mathbf v_i with \sum w_i^2 = 1. Then

\lVert \mathbf A - \mathbf B\rVert_2^2 \ge \lVert(\mathbf A - \mathbf B)\mathbf w\rVert_2^2 = \lVert \mathbf A\mathbf w\rVert_2^2 = \sum_{i=1}^{k+1}\sigma_i^2 w_i^2 \ge \sigma_{k+1}^2 \sum_{i=1}^{k+1} w_i^2 = \sigma_{k+1}^2 = \lVert \mathbf A - \mathbf A_k\rVert_2^2,

where \mathbf B\mathbf w = 0 kills the \mathbf B term, and the last inequality uses that \sigma_1 \ge \dots \ge \sigma_{k+1}. No rank-k \mathbf B can beat \sigma_{k+1}, and \mathbf A_k attains it — so \mathbf A_k is optimal. The trick is entirely about forcing a direction \mathbf w that \mathbf B cannot see (\mathbf B\mathbf w = 0) but that still carries a chunk of \mathbf A’s energy at least as large as \sigma_{k+1}^2; the dimension count p+1 > p is what guarantees such a \mathbf w always exists, for any rank-k competitor.

Example: image compression

Applying this to a 512\times512 image (three colour-channel matrices) and truncating each channel’s SVD to k terms gives a visibly reasonable reconstruction by around k=30–100, while storing only the top k singular values and singular vectors rather than the full matrix (k{=}100 costs roughly a fifth of the naive storage). The point is not compression mechanics but that Eckart–Young guarantees this truncation is the provably best possible rank-k reconstruction in Frobenius norm — you cannot do better with any other rank-k matrix, not just any other SVD-based one.

Questions and doubts

Takeaways


Notes started 2026-09-22.