Собесов

Сценарий ML: cold-start стратегии в recsys

ML / Data ScienceRecsysСредняяSenior

Условие

Опишите стратегии для трёх вариантов cold start: новый user, новый item, новая платформа.

Решение

Подход

1. Новый user (warm catalog)

Стратегии:

  • Popularity baseline: топ-N популярных в его сегменте (гео, демо, ОС).
  • Demographic CF: ближайшие соседи по profile features.
  • Cold-start onboarding: попросить выбрать 3-5 интересов / liked items.
  • Contextual bandit с side features: explore с фокусом на user features.
  • Two-tower: user-tower принимает только profile features (без history) → может рекомендовать item-tower представителей.
def recommend_cold_user(user_features, item_emb, k=10):
    user_emb = user_tower(user_features)  # обучен на warm users
    scores = item_emb @ user_emb
    return top_k(scores, k)

2. Новый item (warm users)

  • Content embedding: представить через item features (text, image embeddings).
  • Pretrained text models: BERT для description → space, в котором попасть к похожим items.
  • Item-item similarity на основе атрибутов → перенести scores от warm items.
  • Exploration boost: пушим новый item с искусственным мульти на CTR-prediction чтобы собрать данные.
def cold_item_emb(item_features):
    text_emb = bert(item_description)
    img_emb = clip(item_image)
    cat_emb = cat_embedding_lookup(category)
    return concat([text_emb, img_emb, cat_emb])

3. Новая платформа (всё cold)

  • Manual curation: редакторы расставляют первые рекомендации.
  • Cross-platform import: эмбеддинги users / items из похожего сервиса.
  • Hybrid с popularity для первых месяцев.
  • Multi-armed bandit на trending categories.
  • Onboarding survey + content embedding.

Exploration

Bandit-based:

  • Thompson Sampling per arm (item).
  • UCB-style: добавить exploration бонус новым items: score + c·√(log(t)/n_item).
  • Boosting cold items: artificial reranker score boost на первый день.
def explore_bonus(item, t, n_shown):
    if n_shown < 100:
        return c * np.sqrt(np.log(t) / max(n_shown, 1))
    return 0

Метрики cold-start

  • Coverage: доля items, которые когда-либо показаны.
  • First-week CTR: CTR в первую неделю после появления item.
  • Time to first click для нового item.
  • New user retention day-7.

Подводные камни

  1. Pure popularity для cold users: дает baseline, но не персонализацию. Mix с feature-based.
  2. Onboarding survey слишком длинный → drop-off. 3-5 items максимум.
  3. Item embedding из неполных метаданных: если description пустое, embedding почти нулевой. Fallback на category-level.
  4. Exploration too much: реальные users в первые дни могут быть недовольны качеством. Tune c.
  5. Cold items могут получать low diversity exposure: пушим тех, кто визуально интересен, но не representative — нерепрезентативный feedback.

Эталонный ответ

Новый user: popularity, onboarding interests, two-tower с user-side features. Новый item: content embedding (BERT/CLIP/categorical) + exploration boost. Новая платформа: manual curation + cross-platform import + popularity + bandits. Метрики coverage, first-week CTR, time-to-first-click.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти