Singular Value Decomposition (SVD)
The singular value decomposition (SVD) is a factorization of a real or complex matrix. It generalizes the eigendecomposition of a square normal matrix with an orthonormal eigenbasis to any
m x n
matrix
Resources
- https://en.wikipedia.org/wiki/Singular_value_decomposition
- https://mathworld.wolfram.com/SingularValueDecomposition.html
- Geometric explanation of SVD and applications
- Cool Linear Algebra: Singular Value Decomposition
- Singular Value Decomposition as Simply as Possible
- Numpy Tutorial: Linear algebra on n-dimensional arrays
- https://jeremykun.com/2016/04/18/singular-value-decomposition-part-1-perspectives-on-linear-algebra/
- Implementations:
- https://fa.bianp.net/blog/2012/singular-value-decomposition-in-scipy/
- http://scicomp.stackexchange.com/questions/1861/understanding-how-numpy-does-svd
- http://scicomp.stackexchange.com/questions/6979/how-is-the-svd-of-a-matrix-computed-in-practice
- https://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_lapack_examples/sgesdd.htm
- http://www.alglib.net/matrixops/general/svd.php
- LAPACK implements a divide and conquer algorithm SGESDD or DGESDD (not the “highly accurate” Golub-Kahan-Reinsch algorithm, SGESVD or DGESVD)
- Truncated SVD by implicitly restarted Lanczos bidiagonalization for Python Numpy
- https://stackoverflow.com/questions/15414027/multiprocessing-pool-makes-numpy-matrix-multiplication-slower
Randomized SVD
- https://gregorygundersen.com/blog/2019/01/17/randomized-svd/
- Fast Randomized SVD (Meta/Facebook research)
Talks
- #TALK SVD (MIT, Gilbert Strang)
- #TALK Singular Value Decomposition (SVD): Mathematical Overview
- #TALK Randomized Singular Value Decomposition (SVD)