English

How to Fake Multiply by a Gaussian Matrix

Data Structures and Algorithms 2020-12-10 v2

Abstract

Have you ever wanted to multiply an n×dn \times d matrix XX, with ndn \gg d, on the left by an m×nm \times n matrix G~\tilde G of i.i.d. Gaussian random variables, but could not afford to do it because it was too slow? In this work we propose a new randomized m×nm \times n matrix TT, for which one can compute TXT \cdot X in only O(nnz(X))+O~(m2d3)O(\text{nnz}(X)) + \tilde O(m^2 \cdot d^{3}) time, for which the total variation distance between the distributions TXT \cdot X and G~X\tilde G \cdot X is as small as desired, i.e., less than any positive constant. Here nnz(X)\text{nnz}(X) denotes the number of non-zero entries of XX. Assuming nnz(X)m2d3\text{nnz}(X) \gg m^2 \cdot d^{3}, this is a significant savings over the na\"ive O(nnz(X)m)O(\text{nnz}(X) m) time to compute G~X\tilde G \cdot X. Moreover, since the total variation distance is small, we can provably use TXT \cdot X in place of G~X\tilde G \cdot X in any application and have the same guarantees as if we were using G~X\tilde G \cdot X, up to a small positive constant in error probability. We apply this transform to nonnegative matrix factorization (NMF) and support vector machines (SVM).

Keywords

Cite

@article{arxiv.1606.05732,
  title  = {How to Fake Multiply by a Gaussian Matrix},
  author = {Michael Kapralov and Vamsi K. Potluru and David P. Woodruff},
  journal= {arXiv preprint arXiv:1606.05732},
  year   = {2020}
}
R2 v1 2026-06-22T14:28:26.624Z