The Netflix Recommendation Engine is based on the principle of a low-rank (truncated) SVD approximation of the (large and sparse) Movie $\times$ Users matrix, and the SVD updating.
Explain the mathematics behind the engine using explanations from the packages IncrementalSVD.jl, and RecSys.jl (see also A parallel recommendation engine in Julia), and the literature on the Internet.
Explain the relation to SVD, truncated SVD, and SVD updating.
Try the packages.
Implement the matrix multiplication for SVD updating using Fast Multipole Method as described in M. Gu and S. C. Eisenstat, A Stable and Fast Algorithm for Updating the Singular Value Decomposition.
In [ ]: