Recommender systems
Explicit, Implicit, and Negative Feedback
Distinguish ratings, clicks, dwell, completion, skips, hides, returns, and complaints as noisy signals with different selection and interpretation problems.
By the end you can
- Distinguish explicit, implicit, negative, and operational feedback signals
- Identify selection bias and ambiguity in common recommendation events
- Design persistence and severity rules for negative feedback
- Combine feedback sources without collapsing their different meanings
Feedback signals carry semantics and selection mechanisms
Explicit feedback asks users to express a judgment. The people who answer are a small, motivated subset. In the LaunchCast study below, 64.85% of the participants analysed said their preference for a song affects whether they choose to rate it at all. Implicit feedback observes behavior at scale instead. But the action may reflect availability, interface friction, habit, price, social context, or incomplete attention.
Negative feedback is the least uniform of the three. One hide can mean dislike. Or fatigue with the repetition. Or that the content was sensitive, that the timing was wrong, that the user is trying to reshape the profile. Those five readings are not one label. A schema that stores them as one has discarded the difference before any model sees it.
Spotify's public session dataset does the opposite. It keeps a skip in four graded columns rather than a single flag. The rest of this lesson is about which of those two habits a team is in, and about what the published measurements say it costs to be in the wrong one.
Collapsing a hide into one negative label throws away the reason the user acted, which is the part worth keeping.
Case
300,000 set-top boxes, and a viewer who might be asleep
The data came from about 300,000 set-top boxes. Roughly 17,000 unique programs aired over the four-week period, aggregating to about 32 million non-zero user-program observations. That is the evidence behind the 2008 paper that set out the asymmetry between implicit and explicit feedback. A measured system, not an anecdote.
The argument has two halves. Implicit feedback carries no reliable negative evidence, because an unwatched show may be disliked, unknown, or simply unavailable. And implicit feedback is noisy by construction. The paper's own example, listing the characteristics of implicit feedback: “We may view that a television is on a particular channel at a particular time, but the viewer might be asleep.” Thirty-two million observations, and not one of them establishes that a person was awake in the room. That is why the observed counts are read as strength of observation — a confidence weight — rather than as a rating.
The explicit side has its own defect, measured just as precisely. A ratings study ran on Yahoo! Music's LaunchCast radio between 22 August and 12 September 2006, and a total of 35,786 users contributed data to it. Marlin and colleagues published it in 2007. Its abstract states the finding plainly: “When asked to report on their own rating behaviour, a large number of users indicate they believe their opinion of a song does affect whether they choose to rate that song, a violation of the MAR condition.” The paper puts a number on it: “64.85% of users responded that their preferences do affect their choice to rate a song.” Across the 5,400 participants analysed, 93.91% say they “very often” rate songs they love. For songs they feel neutral about, the figure is 36.50%. Which songs carry a rating is decided in part by the rating's own value.
Example
Spotify ships a skip as four graded fields; Netflix changed the widget and ratings activity rose 200%
Spotify's public session dataset covers 160 million listening sessions and metadata for about 3.7 million tracks. The 2019 release describes itself in one line: “The dataset consists of 160 million sessions with lengths varying between 10 to 20 interactions.” What matters for a feedback schema is its Table 1. A skip is not stored as one binary. It is four graded fields: skip_1, “whether the track was only played very briefly”; skip_2, “whether the track was only played briefly”; skip_3, “whether most of the track was played”; and not_skipped, “whether the track was played in its entirety”. Beside them sit context_switch, no_pause/short_pause/long_pause, num_seekfwd and num_seekbk. The completions stay “relatively constant at a non-skip rate between 34% and 35%”.
That schema is vindicated by what a later group found inside it. Meggetto and colleagues clustered session-level skipping on the Spotify data in 2021, and the clusters did not come out as one behaviour: “Experimental results on the real-world music streaming dataset (Spotify) indicate four main types of session skipping behaviour.” The four types differ by weekday versus weekend, by time of day and by playlist type. They are not an artefact of session length: “A subsequent analysis of short, medium, and long listening sessions demonstrate that these session skipping types are consistent across sessions of varying length.” The premise of the work is the one this whole lesson rests on: “such implicit feedback signal can be considered a measure of users' satisfaction (dissatisfaction or lack of interest)”. Four types is the count a team collapses when it writes one negative column.
The explicit control is a piece of interface, not a window onto taste, and there is a published measurement of that too. Netflix announced on 16 March 2017 that five-star ratings were going, replaced by a thumbs up/down control. Its “Goodbye Stars, Hello Thumbs” post followed on 5 April 2017, and the change rolled out worldwide over the following weeks. The reason given: “Netflix has had star ratings for much of our history, but we've learned through over a year of testing that while we've used stars to help you personalize your suggestions, many of our members are confused about what they do.” Then the effect, from testing with hundreds of thousands of members during 2016: “when we tested replacing stars with thumbs we saw an astounding 200% increase in ratings activity.” The same population. The same taste. A different widget.
- Explicit judgment: A rating or hide is intentional, but it is also selective and interface-dependent — swapping stars for thumbs gave Netflix a 200% increase in ratings activity from the same members.
- Implicit behavior: Playback and dwell are abundant, and they mix preference with circumstance. Across the 160 million Spotify sessions the non-skip rate sits between 34% and 35%, and none of those completions states a reason.
- Negative action: Skip, return, mute, complaint and “not interested” express different objections. That is why the Spotify schema carries skip_1, skip_2, skip_3 and not_skipped instead of one flag.
- Opportunity cost: A chosen item may win only because the preferred alternative was absent. No column in either schema records the alternative that was missing.
- Temporal meaning: The same action can mean exploration early in a session and rejection later. The 2021 clustering study finds four main types of session skipping behaviour, differing by weekday versus weekend, time of day and playlist type.
Comparison
Confidence in a signal is not the same as utility: a Bing bug raised revenue per user over 30%
Abundance and meaning pull against each other along this row. The high-volume implicit signal arrives constantly and says little about satisfaction. The low-volume explicit signal is closer to an articulated preference, and it comes from the small share of people willing to give it — 64.85% of the LaunchCast participants told the researchers their opinion decides whether they speak at all. The operational outcome is what both are standing in for. It is also the slowest of the three to arrive.
The reason to keep the slow one is documented. A Bing bug once showed users very poor results, and two key organizational metrics improved: “distinct queries per user went up over 10%, and revenue per user went up over 30%!” Kohavi and colleagues at Microsoft reported that in 2012. Degraded algorithmic results force people to issue more queries and to click more on ads, so both proxies rise while the product gets worse. The authors' own test of whether such a metric can be a goal: “If they did, we would intentionally degrade quality to raise query share and revenue!” Their recommendation follows — “we recommend that distinct queries alone not be used as an OEC for search experiments” — and they say the same of revenue per user for search and ad experiments without other constraints. A proxy that can be improved by breaking the product is not standing in for the outcome. It is standing in front of it.
High-volume implicit signal
Easy to collect and fast to update.
- Supports responsive models
- Contains strong exposure bias
- May reward compulsive behavior
- Needs outcome and context slices
Low-volume explicit signal
Closer to an articulated preference.
- Can reveal reasons and boundaries
- Suffers participation bias
- May be stale or strategic
- Useful for onboarding and controls
Operational outcome
Connects recommendation to real consequence.
- May arrive slowly
- Can be affected by many downstream steps
- Often sparse and censored
- Useful for validating proxy metrics
Visual
A feedback semantics table, with the click row and the dwell row measured
Read the table from the most deliberate signal a user gives to the least pleasant. A rating or preference choice is offered on purpose. A skip, a hide, a return or a complaint is a family of refusals, and the rows do not mean the same thing even when one column stores them all. Two of these rows are not assertions at all. They are production decisions with papers attached.
The click row. YouTube's ranker optimises expected watch time per impression rather than click-through rate, and Google published why in 2016: “Ranking by click-through rate often promotes deceptive videos that the user does not complete (“clickbait”) whereas watch time better captures engagement”. The mechanism is a weighting: “the positive (clicked) impressions are weighted by the observed watch time on the video. Negative (unclicked) impressions all receive unit weight.” The click was not deleted from the system. It was demoted to a carrier for a duration.
The dwell row. Article length predicts dwell time almost linearly, on desktop, on tablet and on mobile: “it is very clear that the length of the article has good linear correlation with the average dwell time across devices”. That measurement is Yahoo Labs, 2014. For the longest desktop items the relationship stops behaving: “for desktop when the article is longer than 1,000 words, the plot has big variance”. The warning is explicit: “we need to be careful of the bias of dwell time based user engagement measurements towards long length content stories”. Their reason for going past the click is YouTube's reason too: “users may have clicked on an item by mistake or because of link bait, but are truly not engaged with the content being presented.” The collaborative-filtering experiment in that paper ran on a three-month sample of a Yahoo property: 147,069 distinct users, 11,535 distinct items, 4,358,066 training events and 199,420 test events. The dwell row's caveat is not a thought experiment about a small panel.
Rating or preference choice
Deliberate but sparse; subject to scale use and response bias.
Click or open
Signals attention, not satisfaction or completion.
Dwell or consumption
Adds depth, but depends on item length and background use.
Purchase or completion
Stronger commitment, yet can reflect necessity, discount, or sunk cost.
Skip, hide, return, complaint
Negative families with different severity, causes, and remedy needs.
Steps
One dictionary entry per observable event
Each entry in the dictionary starts as an observable event and ends as a claim validated against outcomes. In between, the team fixes what the event may mean, how long it persists, and how severe it is.
The published work supplies a model answer for two of those steps. Naming the observable event and separating severity is what Spotify's Table 1 does: skip_1 for a track “only played very briefly”, skip_3 for one where “most of the track was played”, not_skipped for a full play. Pause, seek and context-switch fields are recorded next to them rather than folded in. Listing plausible meanings is what the 2021 skipping study forces, because one skip column holds four main types of session skipping behaviour that vary with weekday versus weekend, time of day and playlist type. And validation against outcomes is what the Bing bug enforces: distinct queries per user rose over 10% while the results shown to users got worse. A signal that moves is not yet a signal that predicts the result the product intended.
1. Name the observable event
Define exact UI, timing, and attribution conditions.
2. List plausible meanings
Document positive, negative, neutral, and ambiguous interpretations.
3. Set persistence
Decide whether the signal affects this session, a time window, or durable taste.
4. Separate severity
Keep mild skips distinct from explicit hides, reports, and safety complaints.
5. Validate with outcomes
Check whether the signal predicts satisfaction, retention, or another intended result.
Key idea
Behavior becomes supervision only when its ambiguity is documented
Every feedback event should have a documented interpretation, confidence, attribution window, and downstream use. The 2008 television paper documented its counts as strength of observation rather than as ratings. Thirty-two million observations from about 300,000 set-top boxes still cannot rule out a sleeping viewer. Spotify documented its skip as four graded columns rather than a flag. In both cases the documentation is what lets a later reader work out what the number can support.
Undocumented signals do not stay neutral; downstream teams supply a meaning for them, and each team supplies a different one.
Analogy
A footprint is not a destination
Footprints on several paths prove where someone stepped. They say nothing about whether the walker enjoyed the route, was lost, or had no alternative. Implicit feedback records behavior the same way. One skip can mean an incoming call. The next can mean never show me this again. That is why the honest schemas record how much of the track played, in four graded degrees, rather than the bare fact that it stopped.
Observed action is evidence shaped by opportunity, context, and the interface.
Key idea
The semantics test
Before adding an event to training, explain what the event can support, what it cannot establish, and how a mistaken interpretation can be corrected. Netflix's move from stars to thumbs produced a 200% jump in ratings activity. That is the reminder of how much of a signal's volume belongs to the widget rather than to the user. The Bing bug is the reminder of what a rising number can be hiding.
An event that fails the test can still be logged and watched; what it cannot do is quietly become a label.
Key takeaways
- Behavior becomes supervision only after its context and ambiguity are made explicit: about 32 million observations from about 300,000 set-top boxes still leave open, in the 2008 paper's words, that “the viewer might be asleep”.
- Explicit feedback asks users to express a judgment, and it usually gets one from a small, motivated subset: 64.85% of the LaunchCast participants analysed said their preference for a song affects whether they choose to rate it.
- Every feedback event should have a documented interpretation, confidence, attribution window, and downstream use. Spotify's session schema is that discipline shipped, with skip_1, skip_2, skip_3 and not_skipped alongside pause, seek and context-switch fields.
- A rating or preference choice is deliberate but sparse, and its volume measures the widget as much as the taste: replacing stars with thumbs produced a 200% increase in ratings activity at Netflix.
- Click equals like remains a practical risk. YouTube ranks on expected watch time per impression because ranking by click-through rate promotes deceptive videos the user does not complete.
- A feedback signal earns its interpretation by predicting satisfaction, retention, or whatever result the product intended: a Bing bug that showed very poor results pushed distinct queries per user up over 10% and revenue per user up over 30%.