We prove that any real matrix A contains a subset of at most
4k/\eps + 2k \log(k+1) rows whose span ``contains" a matrix of
rank at most k with error only (1+\eps) times the error of the
best rank-k approximation of A. This leads to an algorithm to
find such an approximation with complexity essentially
O(Mk/\eps), where M is the number of nonzero entries of A.
The algorithm maintains sparsity, and in the streaming model, it
can be implemented using only 2(k+1)(\log(k+1)+1) passes over
the input matrix. Previous algorithms for low-rank approximation
use only one or two passes but obtain an additive approximation.