Why feeds get stuck on popular items
A recommendation model learns from clicks, and users can only click what the feed shows them. That closes a loop: items the model already likes get shown, collect clicks and stay; items it has never shown collect nothing, so the model never finds out whether they are good.
- The chart is a seeded simulation of 300 users and 1,000 items. Each round, every user sees 10 items and clicks each one with its true click probability. The model starts from a two-tower prediction for every user and item pair, and updates its estimate for a pair only when that item is shown to that user. Items it never shows keep their starting estimate forever.
- With no exploration, the feed shows each user the 10 items with the highest estimates. After 40 rounds only 8% of the catalog has ever been shown. The impression Gini, which is 0 when every item is shown equally and 1 when one item gets every impression, is 0.97. Click rate still climbs to 46.2%, so the dashboard looks healthy while the logs cover a small, mostly popular corner of the catalog.
- With 10% exploration, each slot has a 1 in 10 chance of going to a random item instead. Every item is shown by round 22 and the Gini falls to 0.89. The price is visible too: in round 40 the click rate is 42.1%, 4.1 points lower, because random items are usually less relevant than the model's picks.
Takeaway
Exploration is a deliberate cost paid for data. The next model is trained on the logged clicks, and it can only learn about items the old one showed. Smarter exploration, such as bandit methods that favour items the model is unsure about, pays less for the same coverage. The Design a Recommendation Feed case study runs this simulation with your choice of exploration rate.
Data Drift & Model Monitoring
On the Training vs Live Data step, drag the shift in the live feature's mean and watch the training and live data pull apart.
Open the explainer