Skip to content
AI.info

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

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.

FigureComparison · 3 columns

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.

FigureTimeline · 5 stops
  1. Profile construction

    Estimate preference proportions from weighted historical and explicit evidence.

  2. Attribute representation

    Choose genres, topics, price bands, creators, or other decision-relevant dimensions.

  3. List distribution

    Measure the composition of the candidate or final slate.

  4. Divergence or constraint

    Quantify mismatch and re-rank within a relevance budget.

  5. 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

Seventy-thirty is easy to state and not always possible to serve: the same proportions in whole slots at slates of five, ten and twenty.

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.

FigureProcess · 5 steps
  1. 1. Define the profile window

    Separate durable, recent, and explicit interests.

  2. 2. Choose attributes

    Use dimensions that are meaningful, governable, and sufficiently complete.

  3. 3. Select a mismatch measure

    Compare distributions with transparent smoothing and weighting.

  4. 4. Re-rank within value limits

    Preserve relevance and eligibility while reducing mismatch.

  5. 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