Non-Negative Matrix Factorization (RecSys)
Unconstrained factorization is free to put negative numbers in its factors, and it does: a user's taste vector ends up with components that cancel against each other, which is fine for prediction and useless for explanation. Non-negative matrix factorization removes that freedom and gets interpretability back.
What the constraint does
The interaction matrix is approximated as the product of two matrices whose entries are all at or above zero. Because nothing can subtract, each latent dimension becomes an additive part — a cluster of items that genuinely belong together, like the cosy-mystery pocket of a book catalogue — and every user is a non-negative mixture of those parts. Fitting uses multiplicative update rules that preserve non-negativity at every step rather than plain gradient descent, iterating over the observed entries only.
Where it earns its place
The factors can be read, so the same model that predicts a score can also say which taste cluster drove it — the basis for the explanation shown next to a recommendation, with no separate model behind it. It is a standard baseline in Surprise and scikit-learn, and the natural choice when the matrix is non-negative to begin with, as star ratings and play counts are.
The trade-off
Constraining the parameter space costs accuracy: on ranking metrics it sits behind unconstrained ALS or BPR on the same data, and it has no principled way to treat unobserved entries as weak negatives, which is exactly what the implicit-feedback variants of factorization do. Choose it when a human has to understand the factors; choose weighted ALS when only the ranking matters.
Non-negative matrix factorization decomposes the user-item matrix into two factor matrices with no negative entries, fitted by multiplicative updates over the observed values. Forbidding cancellation makes each latent dimension an additive, readable taste cluster, so a prediction can be explained by the factors themselves. The constraint costs ranking accuracy against unconstrained ALS or BPR, which makes it the choice when interpretability matters more than raw top-N performance.
Imagine describing your film taste as a recipe: two parts thriller, one part documentary, a dash of comedy. You can add ingredients, but you can never use a negative amount of one.
That rule is what non-negative matrix factorization enforces. It breaks a huge table of who-liked-what into a small set of taste ingredients, and everyone's taste becomes a positive blend of them. The payoff is that the ingredients mean something a person can read — one of them really is cosy crime novels. That makes it easy to tell you why something was suggested, though a less tidy method usually guesses your next favourite slightly better.