Recommender systems
Matrix Factorization for Explicit Feedback
Understand regularized matrix factorization for ratings, biases, latent factors, cold entries, and diagnostic evaluation.
By the end you can
- Explain biases, latent vectors, dot products, and regularization in explicit matrix factorization
- Compare SGD, ALS, and bias-only baselines
- Identify non-identifiability, cold-start, and exposure limitations
- Design split, tuning, residual, and stability diagnostics
Example
A matrix of 480,189 users by 17,770 movies, 99% of the ratings missing
Almost every cell of the Netflix rating matrix is an absence, and the shape of it is known to the digit. In October 2006 Netflix released a training set: “Netflix provided over 100 million ratings (and their dates) from over 480 thousand randomly-chosen, anonymous subscribers on nearly 18 thousand movie titles. The data were collected between October, 1998 and December, 2005”. The winning Grand Prize write-up gives the grid exactly — “This dataset gives ratings about m = 480,189 users and n = 17,770 movies” — then states the consequence in one sentence: “About 99% of the possible ratings are missing, because a user typically rates only a small portion of the movies.”
Regularization is not a stylistic preference in that regime. A model carrying a vector per user and a vector per item has far more parameters to place than it has ratings to place them with.
On a matrix of that kind, a rating model learned stable user and item vectors. Then a regional catalog expansion arrived. One factor analysts had been calling “quality” changed sign and began tracking availability and language mix. The predictions came through intact. The name did not.
- Sparse matrix: m = 480,189 users and n = 17,770 movies, over 100 million dated ratings, and about 99% of the possible ratings missing.
- Bias terms: The bias layer is justified by an observation about the data, not by convenience — collaborative filtering data shows “large systematic tendencies for some users to give higher ratings than others, and for some items to receive higher ratings than others”.
- Latent interaction: The dot product is the fourth and last component of the decomposition. It takes the residual affinity left after the global average, the item bias and the user bias have been removed.
- Non-identifiability: Rotations of the latent space preserve predictions while changing factor interpretation, and the article that set out the method allows that a discovered dimension may be “completely uninterpretable”.
- Catalog shift: New items and exposure patterns changed what the learned coordinates represented.
Visual
The four components a rating breaks into
A rating breaks into four parts: the global average, an item bias, a user bias, and the user-item interaction. The sentence it comes from is plain — “the observed rating is broken down into its four components: global average, item bias, user bias, and user-item interaction”. Three of the researchers who popularised these models wrote that in 2009.
The order of the stack is an empirical claim, not a convenience. The bias layer sits above the latent layer because the data demands it: “For example, typical collaborative filtering data exhibits large systematic tendencies for some users to give higher ratings than others, and for some items to receive higher ratings than others.” They draw the operational consequence themselves — “Since biases tend to capture much of the observed signal, their accurate modeling is vital.”
The latent vectors take what is left over. The L2-regularized squared-error objective stops them taking more than the evidence supports.
Observed rating
Train only on known user-item ratings under a stated sampling process.
Global and entity biases
Capture average scale, user generosity, and item popularity effects.
Latent user vector
Represents residual patterns in the user’s observed ratings.
Latent item vector
Represents residual patterns in the item’s observed audience.
Regularized objective
Balances fit against parameter magnitude and overfitting.
Analogy
A coordinate grid drawn on a landscape
Two rotated coordinate grids can describe one landscape. Distances and locations stay useful even though “east” in one grid is a mixture of axes in the other. Latent factors behave the same way. The predictive geometry holds while individual coordinates change meaning.
The landscape, though, stays where it is. A catalog does not. When this one expanded into a new region, the factor analysts had been calling quality changed sign.
The people who popularised these models conceded the point themselves. Their list of what a movie factor might measure runs from obvious dimensions through vague ones and ends in “completely uninterpretable dimensions”. That caveat sits in the founding article of the method, not in a later correction to it.
Predictive coordinates need not be human-interpretable axes.
Matrix factorization compresses observed preference into interacting vectors
The model is a sum of four terms: a global mean, a user bias, an item bias, and the dot product of a user vector and an item vector. It is fitted by minimising squared error with an L2 penalty, and the canonical statement of it is the 2009 IEEE Computer article. The penalty does real work here. On the Netflix Prize matrix the parameters far outnumber the evidence they are learned from, because about 99% of the possible ratings are missing.
The factors are useful predictive coordinates, not guaranteed semantic axes. Their orientation can rotate, swap, or change across runs while the scores stay much the same. The size of that effect has been measured rather than merely feared. Change nothing but the random seed, and top-10 lists from the same method overlapped by less than 50% on three of five datasets.
Read a story into a latent dimension and the next training run can quietly retire it while the scores stay much the same.
Case
The tuned dot product beat what replaced it
The inner product has survived a decade of attempts to replace it. A 2017 paper on neural collaborative filtering proposed replacing “the inner product with a neural architecture that can learn an arbitrary function from data”, using “a multi-layer perceptron to learn the user-item interaction function”.
Google re-ran those experiments in 2020. The first finding is about tuning, not about architecture: “First, we show that with a proper hyperparameter selection, a simple dot product substantially outperforms the proposed learned similarities.” The second is about cost — “MLPs are too costly to use for item recommendation in production environments while dot products allow to apply very efficient retrieval algorithms”. The third runs the substitution the other way: “we show that it is non-trivial to learn a dot product with an MLP”.
The pattern is not confined to one paper. Google reported again in 2022, after re-examining four item-recommendation benchmarks, that “with proper tuning, iALS is highly competitive and outperforms any method on at least half of the comparisons”. An independent group had already reported in 2019 that of 18 neural methods only 7 were reproducible. Six of those “can often be outperformed with comparably simple heuristic methods”. The remaining one “did not consistently outperform a well-tuned non-neural linear ranking method”.
The old model was under-tuned, not outclassed.
Steps
Train and diagnose an explicit-feedback factor model
Bias baselines come before latent factors, and the Netflix Prize turns that ordering into a number. Netflix published the score of its deployed system: “The company reported the RMSE performance of Cinematch trained on the Prize dataset against the quiz subset as 0.9514, a 9.6% improvement over simply predicting individual movie averages.” In BellKor's Grand Prize solution, a predictor built only from main effects “lowers RMSE to 0.9555”. That is almost as much of the data variability as the commercial system explained, with no user-item interaction term in it at all. Its biases were made time-aware: a linear user drift, a per-day user bias, time-binned item biases, and a per-day user rating-scale factor. Add a term for the number of ratings a user gave on that day and “RMSE drops from 0.9555 to 0.9278”. That is past the deployed commercial recommender, still with no latent factors anywhere in it. Without the per-day scaling factor the same baseline scored 0.9605. Step one is not a formality.
Step three, the rank and regularization sweep, decides more than it is usually credited with. Google re-ran the standard baselines on MovieLens 10M. Its publishers describe the set this way: “This data set contains 10000054 ratings and 95580 tags applied to 10681 movies by 71567 users of the online movie recommender service MovieLens.” The evaluation used a global random 90:10 split. Plain SGD matrix factorization “achieved an RMSE of 0.7720 for a 512-dimensional embedding and an RMSE of 0.7756 for 64 dimensions”. The literature had reported 0.8256 and 0.803 for that same method. Their Bayesian MF reached 0.7633. That beat MRMA at 0.7634, the best result any method had reported on that benchmark, and it beat the 0.8197 previously reported for the very same Bayesian model. Their summary, in 2019: “With a careful setup of a vanilla matrix factorization baseline, we are not only able to improve upon the reported results for this baseline but even outperform the reported results of any newly proposed method.” Validation curves, not factor-count folklore, are what stood between five years of published progress and its undoing.
Step five has a measurement of its own. In 2021 Gabbolini and colleagues compared top-10 lists from BPR-MF, Funk-MF and P-MF across five datasets, changing only the initial random seed. On three of the five the lists overlapped by less than 50% by Jaccard, and on BookCrossing by less than 30%. In their words: “For these datasets, more than 50% of the recommended items change by changing the initial random seed, i.e. by simply altering the initial values of the latent factors. For the BookCrossing dataset the instability is even more dramatic: lists overlap by less than 30%.” A seed comparison is not a nicety at that rate. It is the rate at which one fit disagrees with the same fit reseeded.
1. Establish bias baselines
Measure global, user, and item effects before latent factors.
2. Choose split logic
Respect users, time, duplicate ratings, and intended serving conditions.
3. Tune rank and regularization
Use validation curves rather than factor-count folklore.
4. Inspect residuals
Analyze users, items, rating scales, and sparse-support slices.
5. Test stability
Compare predictions and neighborhoods across seeds and retraining windows.
Evidence should focus on predictions and behavior
Evaluate rating error, ranking utility, coverage, calibration, and cold-start performance separately. A low RMSE does not guarantee that the top-N list is useful, because small rating differences can change ordering and exposure. When factors are used for retrieval or explanation, test neighborhood stability and avoid semantic labels unsupported by item content or user research.
The firmest statement of that limit came from the operator of the largest deployed rating-prediction system of its era. Netflix's own engineering leadership wrote in 2015: “Thus, while we do rely on offline experiments heavily, for lack of a better option, to decide when to A/B test a new algorithm and which new algorithms to test, we do not find them to be as highly predictive of A/B test outcomes as we would like.” Their diagnosis is that such experiments “assume that members would have behaved the same way ... if the new algorithm being evaluated had been used to generate the recommendations”. The ship decision rested on A/B tests measuring retention and engagement, not on an error metric. And this was the company whose own error metric had been the object of a public competition.
One accuracy number can hide a system that orders badly, covers little, and has nothing to offer a new user.
Example
Factorization failure modes
Random split optimism is a claim about the evaluation. Over- or under-regularization is a claim about the fit. A model can fail either one while passing the other, so test them apart. Otherwise a leaked future rating will be read as a well-tuned model. Two of the five below can be pinned to published evidence rather than to intuition. Seed instability is one: “by simply changing the initial values assigned to the latent factors, the same MF method generates very different embeddings of items and users, and we highlight that this effect is stronger for less popular items”. Factor storytelling is the other. Its canonical instance is a figure in the 2009 article, where the first two Netflix factors are annotated by hand with genre labels.
- Random split optimism: Future ratings or duplicated entities appear in training and test. The MovieLens 10M results above rest on a global random 90:10 split, a benchmark convention rather than a model of serving conditions.
- Factor storytelling: Analysts assign names to axes without stability or intervention evidence, exactly as the hand-drawn genre labels on the first two Netflix factors do in the article that introduced most readers to the method.
- Cold row failure: New users and items have no learned vector beyond priors or biases. With 480,189 users and 17,770 movies in play, the bias layer is the whole of what a newly arrived entity gets.
- Exposure blindness: Ratings are treated as if every item had equal chance to be rated, when a set like the Netflix one records only what subscribers chose to rate between October, 1998 and December, 2005.
- Over-regularization or under-regularization: The model collapses toward biases or memorizes sparse observations. On this data the collapse target is not weak, since a bias-only predictor reached 0.9555 against Cinematch's 0.9514.
Key idea
The interpretation gate
Use latent factors as compact predictive state. Demand separate evidence before treating them as meaningful preference dimensions.
The gate is not this lesson's invention. Writing about the class of models that won the Netflix Prize, the 2009 article set out the range of what a learned dimension might be: “For movies, the discovered factors might measure obvious dimensions such as comedy versus drama, amount of action, or orientation to children; less well-defined dimensions such as depth of character development or quirkiness; or completely uninterpretable dimensions.”
Three possibilities. The fitted model does not report which one it handed you.
Name a factor and you have made a claim the model never made; the burden of proof moves to whoever named it.
Key takeaways
- Matrix factorization is powerful because it discovers interaction structure, not because it uncovers a unique hidden psychology — the authors who popularised it allowed for “completely uninterpretable dimensions” in the same article.
- A rating is predicted from four parts: global mean, user bias, item bias, and the dot product of user and item latent vectors. The 2009 IEEE Computer article put it this way: “the observed rating is broken down into its four components: global average, item bias, user bias, and user-item interaction”.
- Latent factors explain prediction mathematically. They do not automatically explain preference psychologically, which is why a factor's name requires evidence the score itself cannot supply.
- You train only on known user-item ratings, under a stated sampling process. In the Netflix Prize set that meant over 100 million of them across 480,189 users and 17,770 movies. “About 99% of the possible ratings are missing”.
- Random split optimism remains a practical risk, with future ratings or duplicated entities appearing in training and test. Even a clean offline split is not the decision: Netflix reported that it did “not find them to be as highly predictive of A/B test outcomes as we would like”.
- Compare predictions and item neighborhoods across random seeds and retraining windows. Change only the seed and top-10 lists overlapped by less than 50% on three of five datasets, and by less than 30% on BookCrossing.