Recommender systems
Calibration and Preference Consistency
Understand recommendation calibration as matching list composition to a user profile, and separate it from probability calibration.
By the end you can
- Explain recommendation calibration and distinguish it from probability calibration
- Design profile and slate distributions over meaningful attributes
- Identify history lock-in, taxonomy, sparse-profile, and context risks
- Evaluate relevance-calibration tradeoffs across user states
Example
Seventy romance films, thirty action films, and a ranker with no term for the mixture
A user has watched 70 romance movies and 30 action movies. The list that user should get back is about 70% romance and 30% action. The list an accuracy-optimised ranker returns instead is romance in every slot. Each romance candidate outscores each action candidate, and nothing in a score-ordered top-N ever inspects the proportions of what it has assembled. Steck set the problem out in 2018 with exactly this user. His warning is precise: a system tuned for accuracy alone lets a user's lesser interests get crowded out. The thirty action films are not outvoted. They are never counted.
- Profile distribution: 70 romance and 30 action is a mixture with a ratio in it, not a single taste. The 30 states what this user watches as much as the 70 does.
- Top-N concentration: the target is a list of about 70% romance and 30% action. A ranker ordering by score alone can return 100% of the stronger interest and never register an error, because it has no term that reads its own composition.
- Calibration goal: the slate should carry the proportions, not the titles — a rule about composition, applied after scoring. That is exactly where Steck put his re-ranking post-processing algorithm.
- Temporal tension: the item weights w_u,i and the rank weights w_r(i) are both set to 1, in the formulation Kaya and Bridge reproduce from Steck. Recency weighting exists in the definition and went unused in the experiments. The profile being matched is history with no dates on it.
- User autonomy: the same 70/30 may be exactly what the user wants handed back, or the familiar half of a session they opened in order to leave it. The profile alone cannot tell you which.
Comparison
Profile calibration, probability calibration, and the third option somebody measured
The two calibrations share a word and almost nothing else. Profile calibration is a property of the list: does its composition resemble the user's interest mix? Probability calibration is a property of the score: does a predicted probability match how often the outcome actually happens? The second is measured as expected calibration error, a score-level statistic that depends on population and time. It says nothing whatever about what a list contains.
Intent-aware diversification is the third option, and it does not have to be argued about. Somebody put it on a bench beside calibrated re-ranking. Kaya and Bridge ran that comparison in 2019, against the intent-aware methods xQuAD and SPAD, on two datasets. MovieLens 20M after preprocessing: 137,765 users, 20,631 items, 9,990,460 interactions. The Taste Profile subset: 375,749 users, 190,629 items, 19,328,665 interactions. Their section on the distinction opens on the distinction itself: “Intent-aware recommendation may result in calibrated recommendations, but it does not directly aim to cover the user’s interests in the same proportion as they occur in the user’s profile.” That is the whole difference in one sentence. Covering plausible sub-intents is not the same objective as reproducing proportions. A method can deliver the first and land anywhere on the second. What the comparison reported: defining a user's interests as subprofiles rather than as item features gave the highest precision and the best relevance/diversity trade-off.
Profile calibration
Matches slate composition to a user-interest distribution.
- List-level property
- Depends on chosen attributes
- Can improve interest coverage
- May preserve historical bias
Probability calibration
Matches predicted probability with observed outcome frequency.
- Score-level statistical property
- Supports thresholds and expected utility
- Depends on population and time
- Does not guarantee list diversity
Intent-aware diversification
Covers plausible sub-intents without copying profile proportions exactly.
- Useful under uncertainty
- Can prioritize current context
- Needs intent representation
- May intentionally depart from history
Visual
A calibration workflow, with the divergence and the constant named
Calibration compares two distributions, and both halves of the comparison are built rather than found. Profile construction estimates preference proportions from the user's history and explicit evidence. Attribute representation chooses the dimensions the proportions are taken over — genres, topics, price bands, creators. Then the composition of the candidate or final slate is measured on those same dimensions.
The fourth step has a standard form. The degree of calibration C_KL(p,q) is the Kullback-Leibler divergence between p(f|u), the distribution of a feature over the items the user has liked, and q(f|u), the distribution of that feature over the recommendation list. KL has a sharp edge. It diverges whenever q(f|u) is 0 while p(f|u) is greater than 0. That is a genre the user actually watches, missing from the list entirely — the exact case the metric exists to punish. Rather than let the measure blow up, q is replaced by a smoothed q̃ = (1-α)q(f|u) + αp(f|u). The constant is not derived. It is inherited, and Kaya and Bridge say so outright: “Steck uses α = 0.01, and we do the same.” One hundredth of the user's own profile is poured into the list's distribution before the divergence is taken. So a list that contains none of an interest is never scored as containing none of it. Steck also proves that the combined relevance-plus-calibration objective satisfies the conditions under which greedy re-ranking attains a 1 - 1/e approximation to the optimum. A real guarantee, and a bounded one.
The last step is the one teams skip: asking the user and the context whether that target mix is wanted right now. No divergence, however carefully smoothed, contains that question.
Profile construction
Estimate preference proportions from weighted historical and explicit evidence.
Attribute representation
Choose genres, topics, price bands, creators, or other decision-relevant dimensions.
List distribution
Measure the composition of the candidate or final slate.
Divergence or constraint
Quantify mismatch and re-rank within a relevance budget.
User and context validation
Check whether the target mix fits current intent and user control.
Recommendation calibration concerns composition, not confidence alone
In recommender systems, calibration usually means matching the list to the profile. The distribution of properties in the recommended list should resemble the distribution in the user's history. In practice that is a Kullback-Leibler divergence between a feature distribution over the items a user liked and the same feature distribution over the list, smoothed by α = 0.01 so it stays finite. A calibrated list can preserve multiple interests and reduce systematic overrepresentation. Probability calibration is a different thing entirely. There a predicted probability should match the frequency actually observed, and the measurement is an expected calibration error computed over M = 15 bins. Both can hold at once. Each is measured its own way, on its own object: one on a list of items, one on a number attached to a single prediction.
Calling a system calibrated says nothing until you state which sense you measured. One is a divergence between two genre distributions; the other an error over fifteen bins. A system can be excellent at one and failing at the other.
Case
Steck, 2018: seventy percent romance should come back as seventy percent
Seventy percent of what a user watches should be seventy percent of what that user is offered. The paper that named the problem opens its abstract with the entire argument in one sentence: “When a user has watched, say, 70 romance movies and 30 action movies, then it is reasonable to expect the personalized list of recommended movies to be comprised of about 70% romance and 30% action movies as well.” Steck published that in 2018. The 70 and the 30 are counts of films, not a ratio handed down from nowhere. The percentages are what those counts imply for the list. Against that expectation he sets the failure: systems optimised for accuracy let a user's lesser interests get crowded out. And he offers two instruments rather than one complaint — calibration metrics, and a re-ranking post-processing algorithm that runs after the scoring is done. That is what makes the composition rule a visible, reversible step instead of a property nobody can locate.
Probability calibration is a different literature with a different measurement. Modern networks are badly miscalibrated, and that finding opens the 2017 paper by Guo and colleagues: “We discover that modern neural networks, unlike those from a decade ago, are poorly calibrated.” Measured as expected calibration error with M = 15 bins, a 110-layer ResNet on CIFAR-100 came in at 16.53%. The 5-layer LeNet of 1998, on the same dataset, came in at 4.85%. Across their datasets and architectures, typical miscalibration ran 4-10% ECE. Temperature scaling, a single parameter, took that 16.53% down to 1.26%. Matrix scaling on the same model went the other way, to 25.49%. So the cheap fix is real, and the failure scales with architecture rather than being one model's anecdote. None of it touches the composition of a list.
Figure
Calibration should be treated as a controllable policy
Show tradeoff curves between relevance and composition mismatch. Evaluate users with narrow, broad, changing and sparse profiles separately, because the trade does not land the same way on all of them. That is a measured claim, not a caution.
Spotify measured it in 2020. The data covered over 100 million distinct users who streamed around 70 billion times in the first 28 days of July 2019, and the analysis itself was restricted to premium users. Each user's diversity was scored with a generalist-specialist score, the GS-score. Algorithm-driven listening came out less diverse than user-driven listening. Profile shape then tracked the outcomes a platform actually watches: “Controlling for activity (the number of songs played), generalist users are up to 25 percentage points less likely to leave the platform and up to 35 percentage points more likely to become a paid subscriber.” A randomized experiment in the same work found that relevance mattered more to specialists than to generalists. The same relevance-for-composition trade, priced differently for two kinds of user inside one product.
So offer modes or controls where the product supports them. “More like this” can intentionally narrow the distribution; a home feed may preserve a wider preference mix.
How closely a list should track the profile is a per-surface and per-segment decision. Up to 25 points of churn and up to 35 points of conversion separated generalists from specialists on one platform. That belongs in modes and controls, not in one global default.
Example
Calibration failures
Attribute choice bias happens before anything is calibrated. A taxonomy nobody chose for this purpose decides which preferences are allowed to count. The attribute space of the published calibration literature is largely inherited: “In the original ML20M dataset, all users have at least 20 movies in their profile and movies have one or more of 19 genres.” Every proportion, every divergence and every claim of a well-calibrated list is a statement about those labels and nothing else.
Miscalibration is also not spread evenly across users. A 2020 study took miscalibration as the measure of how far a recommender's output sits from a user's true preference distribution. It reported from two real-world datasets: “Moreover, we show that the more a group is affected by the algorithmic popularity bias, the more their recommendations are miscalibrated.” The users furthest from popular taste are the ones served worst. An average divergence hides them.
False comfort happens after all of it, when a calibrated list gets described as fair, satisfying or diverse without separate evidence for any of the three.
- Attribute choice bias: the entire preference vocabulary of MovieLens 20M is 18 named genres (Action, Adventure, Animation, Children's, Comedy, Crime, Documentary, Drama, Fantasy, Film-Noir, Horror, Musical, Mystery, Romance, Sci-Fi, Thriller, War, Western) plus the label “(no genres listed)”. Underneath those labels sit 20,000,263 ratings and 465,564 tag applications across 27,278 movies, created by 138,493 users between 9 January 1995 and 31 March 2015 and generated on 17 October 2016. A preference the labels do not encode cannot appear as mismatch.
- History lock-in: past exposure is treated as the desired future mix, and the exposure was shaped by the system. A 2020 paper drew that connection between popularity bias, calibration and fairness in recommendation.
- Rare-interest erasure: the smoothing that keeps the measure finite is the same knob that hides the failure. With q̃ = (1-α)q(f|u) + αp(f|u) at α = 0.01, a list containing none of a genre the user watches is never scored as containing none of it.
- Context neglect: a task-specific session is forced toward the long-term distribution, and the definition offers no help. The item and rank weights in the published experiments are set to 1 and carry no notion of when anything happened.
- False comfort: a calibrated list is described as fair, satisfying, or diverse without separate evidence for any of the three, when what was measured was a divergence over 18 genre labels plus “(no genres listed)”.
Steps
Design a calibrated recommendation policy
A calibrated policy starts from the profile window, keeping durable, recent and explicit interests apart. The published formulations skip that step: both the item weights and the rank weights are set to 1. Second, choose attributes that are meaningful, governable and sufficiently complete — knowing that in most reported results the attribute set is 18 named genres plus “(no genres listed)”. Third, select the mismatch measure. That is the Kullback-Leibler divergence between p(f|u) and q(f|u), with the smoothing constant stated out loud rather than inherited. α = 0.01 is a choice about how much of the profile is lent to the list before the comparison is made.
The fourth step, re-ranking within value limits, is usually treated as one obvious move. It is a solver choice with published consequences. Greedy re-ranking comes with the 1 - 1/e approximation guarantee. A 2021 paper spelled out what that leaves on the table: “Greedy heuristic approaches have been proposed to calibrate recommendations, and although they provide great improvements, they can result in inefficient solutions in that a better one can be missed because of the myopic nature of these algorithms.” Its constrained-optimization model, combining accuracy and calibration, outperformed the state-of-the-art heuristics in most cases — on both the accuracy of the recommendations and the level of calibration achieved.
The fifth step ends at user outcomes rather than at distribution distance. Satisfaction, discovery, control and segment effects are the test that matters. The Spotify work measured churn and conversion across generalists and specialists, not the distance between two histograms.
1. Define the profile window
Separate durable, recent, and explicit interests.
2. Choose attributes
Use dimensions that are meaningful, governable, and sufficiently complete.
3. Select a mismatch measure
Compare distributions with transparent smoothing and weighting.
4. Re-rank within value limits
Preserve relevance and eligibility while reducing mismatch.
5. Validate user outcomes
Measure satisfaction, discovery, control, and segment effects.
Key idea
The calibration gate
Use profile calibration only when the target distribution, attribute ontology, time horizon and relevance cost can be defended. Each of the four is a named object, not a matter of taste. The target distribution is p(f|u) over the items the user liked. The ontology, in most of the literature, is 18 named genres plus “(no genres listed)” across 27,278 films. The time horizon in the published experiments is no horizon at all: item and rank weights are set to 1. The relevance cost is a solver decision, between a greedy re-ranker carrying a 1 - 1/e guarantee and a constrained optimization that beat those heuristics in most cases on both accuracy and calibration.
Leave any of those four choices undefended and calibration quietly becomes a preference for whatever past the logs happened to record, expressed in whatever labels the catalogue happened to ship with.
Key takeaways
- Preference consistency is one list-quality objective, not a universal definition of good personalization. Steck's 2018 example user watched 70 romance movies and 30 action movies, and should get back about 70% romance and 30% action.
- Profile calibration is measured as a Kullback-Leibler divergence between the feature distribution over a user's liked items and the same distribution over the list. q is smoothed as q̃ = (1-α)q(f|u) + αp(f|u) at α = 0.01 — an inherited constant that decides how loudly a missing interest is allowed to register.
- Probability calibration is a different quantity on a different object: 16.53% ECE falling to 1.26% after temperature scaling on a 110-layer ResNet, measured with M = 15 bins. It repairs a score and rearranges no list.
- Intent-aware diversification may produce calibrated lists but does not aim at profile proportions. That is what Kaya and Bridge measured against calibrated re-ranking, with xQuAD and SPAD on MovieLens 20M and the Taste Profile subset.
- Attribute choice bias is countable. 27,278 films sorted into 18 named genres plus “(no genres listed)” is the attribute space most published calibration results are computed on, and a preference those labels miss cannot show up as mismatch.
- A calibrated list justifies itself only if satisfaction, discovery and user control improve across segments rather than on average. Miscalibration lands hardest on the groups most affected by popularity bias, and on Spotify generalist users were up to 25 percentage points less likely to leave and up to 35 percentage points more likely to become paid subscribers.