studio-lab
What collaborative filtering assumes about people
Written up · 2025
- Published
- Separator
- •
- Author
- rhizae
- Separator
- •
- Last updated
A written-up account of how user-user and item-item recommendation differ, and what each one quietly assumes about the people it is describing.
Tags
- recommender-systems
- notebooks
Collaborative filtering works by assuming that similarity is transitive: if you and I agree about several things, we will probably agree about the next one. It is a good assumption often enough to be useful and wrong often enough to matter, and the two common implementations are wrong in different directions.
Two ways to compute the same thing
User-user filtering finds people similar to you and recommends what they liked. Item-item filtering finds items similar to the ones you liked and recommends those. The arithmetic is nearly identical. The assumption is not.
User-user treats taste as a property of people, so it needs enough of your history to place you among them. It fails on new users, and it fails quietly, by recommending whatever is popular and calling it personalization.
Item-item treats similarity as a property of the catalogue. It is stable, because the relationship between two items changes more slowly than a person’s taste does, and it works from a much shorter history. Its failure is narrowness: it keeps returning to the neighborhood it already found.
What both assume
Both assume that recorded behavior is preference. It usually is not quite. A play count records what was available, what was recommended last time, and what happened to be at the top of a list — so a model trained on it partly learns the previous model’s output.
That circularity does not make the approach useless, but it does mean an evaluation against held-out historical data measures agreement with past behavior rather than usefulness. Data covers why the provenance of the input is part of the analysis rather than a footnote to it.
Where this goes next
The claims above are structural rather than empirical: nothing here has been run. Reading a recommender notebook in the open applies all three approaches to a real play-count dataset, which is the point at which the differences stop being arguments and start being numbers.
Written up and checked, but not yet applied to anything or argued from.
Led to
- Reading a recommender notebook in the open — Application