Weighted ALS
Implicit feedback has no negatives, only absences — and a factorisation that treats every absence as a confident zero will be wrong in a very specific way. Weighted ALS is the fix that made matrix factorisation work on clicks and plays.
Confidence instead of ratings
The Hu, Koren and Volinsky formulation replaces the rating with two quantities: a binary preference, one if any interaction was observed, and a confidence that rises with the interaction count, typically one plus alpha times that count. The objective then sums over every cell of the matrix, not just the observed ones, with each squared error weighted by its confidence. Forty plays of an album carry real weight; a blank still carries weight one — a weak, low-confidence vote for “no preference” rather than silence.
Why alternating least squares
Summing over all cells sounds ruinous, but the weights are built so the normal equations decompose into a term shared by all users plus a correction over that user's observed items. Each user factor is then a closed-form ridge solve, and with item factors held fixed every user is independent — so the step parallelises cleanly. Iterations alternate: solve all users, solve all items, repeat.
Where you meet it
This is the algorithm behind the implicit library in Python and Spark MLlib's ALS in implicit-preference mode. Tune alpha with care: too high and the head of the catalogue dominates every factor, too low and the model cannot tell engagement from noise.
Weighted ALS is the implicit-feedback variant of alternating least squares: it splits each observation into a binary preference and a confidence weight that grows with interaction count, then minimises weighted squared error over every cell of the user-item matrix — unobserved pairs included, at low confidence. That weighting is what lets matrix factorisation learn from clicks and plays, where no explicit negatives exist. It underpins the implicit library and Spark MLlib's ALS.
If a friend plays one album forty times, you can be confident they love it. If they have never played another, you cannot conclude much — maybe they hate it, maybe they have simply never heard of it. Those two kinds of silence deserve different treatment.
Weighted ALS is a recommendation method built around that difference. It still looks at everything you have not touched, but treats each of those gaps as a very faint hint rather than a firm no, while things you returned to again and again count heavily. That simple weighting is what lets the system learn taste from ordinary listening and clicking, with nobody ever rating anything.