RubixML/Tensor

Singular Value Decomposition (SVD)

andrewdalpino opened this issue · 1 comments

Singular Value Decomposition (SVD) is used in a few machine learning methods such as Latent Semantic Analysis (LSA), collaborative filtering recommender systems, and more. It generalizes the eigendecomposition of a square normal matrix to any m x n matrix via an extension of the polar decomposition. This ticket is to research the best SVD algorithm (or set of algorithms) to implement that covers the two aforementioned use cases. Note that we'll need both PHP and Zephir/C implementations of SVD, however, for the prototype it would be perfectly fine to focus on one (PHP) or the other (Zephir/C).

https://en.wikipedia.org/wiki/Singular_value_decomposition

https://en.wikipedia.org/wiki/Matrix_factorization_(recommender_systems)

https://en.wikipedia.org/wiki/Latent_semantic_analysis

https://numpy.org/devdocs/reference/generated/numpy.linalg.svd.html

Implemented here 7951012