Chapter 5 · Part 3

The new-user problem

Everything so far needs history. Collaborative filtering needs your co-likes; taste vectors need enough ratings to place your point. So what happens the moment you install an app and the system knows literally nothing about you? This is the cold-start problem, and it bites in three ways: new users, new items, and brand-new apps with no data at all.

Scroll to watch the strategy shift as the very first signals trickle in.

Zero interactions: collaborative methods have nothing to work with.

scroll

Bridging the gap with content

The escape hatch is to use information you have before any interactions: the content itself.

  • Content-based filtering describes each item by its own features — tags, genre, the creator, text or audio analyzed by a model (often into embeddings). A new item can be recommended the instant it's uploaded, because you can match its features to what a user already likes — no co-likes required.
  • Popularity / trending is the universal fallback for a new user: with no personal signal, "what's popular right now" is a surprisingly strong default.
  • Onboarding shortcuts the cold start by asking — "pick a few topics you like" — manufacturing a little explicit signal up front.

Cold start never fully ends

Even a mature app faces it constantly: every new video, song and product starts cold, and needs content features (or a deliberate burst of exposure) to gather its first ratings. It's not a one-time hurdle but a steady-state fact of life — which is why almost every real system is a hybrid of collaborative and content-based methods.

coldstart.py — blend popularity into personalization
def score(user, item, n_interactions, k=10):
  alpha = n_interactions / (n_interactions + k)   # 0 when new -> 1 with history
  pop = popularity(item)                           # always available
  pers = personalized(user, item)                  # needs history (CF / vectors)
  return (1 - alpha) * pop + alpha * pers

Where we're headed

We can now recommend to anyone, new or seasoned. But there's a sting in the tail. Every recommendation changes what you do next, which changes the next recommendation. Follow that loop far enough and you get filter bubbles. The finale: the loop you're in.