Katkat

Design a short-video recommender system

LinkedInData Scientist · Technical Screen

Last updated

This question assesses the ability to architect a multi-stage machine learning pipeline for a short-video feed, covering candidate generation, ranking, and performance evaluation.

Problem Statement

You are tasked with designing a short-video recommendation system for a platform similar to LinkedIn's video feed. The goal is to maximize user engagement (dwell time) while maintaining content quality.

Requirements

  1. Pipeline Architecture: Describe the multi-stage process to go from a pool of millions of videos to the top 10 items shown to a user. Explain why a multi-stage approach is preferred over a single end-to-end model.
  2. Feature Engineering: Identify key features to capture user preferences and video characteristics. How would you handle cold-start problems for new videos or new users?
  3. Model Objectives: Define the target label for the ranking model. How would you balance short-term engagement (e.g., clicks/views) with long-term metrics (e.g., retention)?
  4. Evaluation: Explain the difference between offline metrics (e.g., AUC, NDCG) and online metrics (A/B testing). What secondary metrics would you monitor to ensure a healthy ecosystem?

Assumptions

  • The platform has 50 million daily active users and 1 million new video uploads daily.
  • The system must provide recommendations in under 200ms.

Expected Output

Provide a high-level design document covering the data flow, model components, and the strategy to maintain low latency.

Hints

Hint 1

Consider splitting the system into a high-recall candidate generation layer followed by a high-precision ranking layer.

Hint 2

For cold-start, think about using content-based embeddings or exploration strategies like Multi-Armed Bandits.

Hint 3

Think about how to transform implicit feedback, such as watch time or 'completion rate', into a target variable for the ranking model.

Follow-up questions

  • How would you handle negative feedback, such as a user clicking 'not interested' or skipping the video immediately?
  • If you notice the feed is becoming 'stale' (showing the same content), what changes would you make to the candidate generation stage?
  • How would you implement a 'diversity' constraint to ensure the feed doesn't just show one type of content?