ML Systems Lab Open interactive version →
Intermediate 20 min read RecSyscold startcontent featuresexploration

Cold Start

User cold start vs item cold start — content features and exploration

Collaborative filtering — the engine of most recommenders — learns from interaction history: "users who liked X also liked Y." That engine has a structural blind spot: it can say nothing about an entity it has never seen interact. This is the cold-start problem, and it has two distinct faces that need different fixes.


User cold start: a brand-new user has no history to collaborate on. You can't retrieve "items similar to what they liked" because they've liked nothing. The fixes ladder from cheap to smart:

- Fall back to popularity / trending (globally or by segment) as a floor. - Use whatever context you do have — device, language, location, time of day, referral source. - Run a lightweight onboarding (pick a few interests) to seed a profile. - Update a real-time user embedding aggressively from the first few interactions, so the system personalizes within the session rather than waiting for a nightly retrain. TikTok's fast first-session personalization is this last move done well.


Item cold start: a brand-new item has no interactions, so collaborative signal can't place it. A pure two-tower model trained on interaction IDs literally has no embedding for an item nobody has touched. The fix is to build the item tower on content features (text, image, audio, category, creator) rather than a learned per-item ID embedding — so a new item gets a reasonable embedding *from its content* on day one, before any interactions exist. This is why content features aren't just a nice-to-have; they're what makes new items recommendable at all.


Exploration is the bridge that turns cold items warm. Even with content features, the system's estimate of a new item is uncertain, and a pure-exploitation ranker (always show the current best predicted item) will rarely surface it — so it never gathers the interaction data that would improve the estimate, a self-reinforcing starvation. Exploration (ε-greedy, or better, uncertainty-aware bandits like Thompson sampling / UCB) deliberately shows uncertain items to gather signal. It trades a little short-term engagement to break that starvation loop — and it's the explicit cost that keeps the long tail and new content alive.

Key points

Takeaway

Cold start has two faces: a new *user* (no history → popularity, context, onboarding, and fast real-time embedding updates) and a new *item* (no interactions → build the item tower on content features so it's embeddable on day one). Exploration is the bridge that turns cold items warm — deliberately surfacing uncertain items so they gather the signal a pure-exploitation ranker would never let them earn.

Recap

Check your understanding

Q1. A pure ID-embedding two-tower recommender cannot recommend items uploaded in the last hour at all. What is the root cause and the correct architectural fix?

Q2. Your platform adds content features so new items *can* be embedded, yet new items still almost never get shown. Why, and what's the fix?

Q3. Select the *two* approaches that best handle a brand-new *user* who has zero interaction history.

Try it interactively

ML Systems Lab is a free interview-prep platform for ML engineers — work through the full interactive module, quizzes, and drills.

Open ML Systems Lab →