Как производятся рекомендации при холодном старте

«Как производятся рекомендации при холодном старте» — вопрос из категории Рекомендательные системы, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В рекомендательной системе, над которой я работал, проблема холодного старта решалась комбинацией нескольких не-Personalized подходов, пока не накапливалось достаточно данных для коллаборативной фильтрации.

Основные стратегии для нового пользователя:

  1. Рекомендация самых популярных товаров (Most Popular): Самый надежный и простой метод. Мы ранжировали товары по глобальному количеству покупок или просмотров за последние N дней и показывали топ.

    # Пример: расчет популярных товаров за последнюю неделю
    import pandas as pd
    # df_interactions содержит колонки: 'item_id', 'user_id', 'event_type', 'timestamp'
    df_recent = df_interactions[df_interactions['timestamp'] > (now - pd.Timedelta(days=7))]
    popular_items = (df_recent[df_recent['event_type'] == 'purchase']
                     .groupby('item_id').size()
                     .sort_values(ascending=False)
                     .head(20))
    # popular_items - это Series с item_id и количеством покупок
  2. Контентно-демографические рекомендации: Если при регистрации пользователь указал демографические данные (например, пол, город), мы рекомендовали популярные товары в его сегменте. Например: «Самые покупаемые кроссовки среди мужчин 25-35 лет в Москве».

  3. Рекомендации по контексту сессии (Session-based): Для пользователя, который уже что-то смотрит, но еще не идентифицирован, использовались простые правила:

    • „Похожие товары“: На основе заранее рассчитанных эмбеддингов товаров (например, через Item2Vec на исторических сессиях) или по общим тегам/категориям.
    • „Часто покупают вместе“: Правила ассоциаций (Apriori), рассчитанные на исторических данных по корзинам.
  4. Диверсификация (Exploration): Чтобы быстрее собрать данные о предпочтениях, небольшую долю рекомендаций (например, 1-2 слота из 10) отдавали под случайные товары из перспективных новых или низкорейтинговых категорий.

Переход к персонализации: Как только у пользователя фиксировалось более 3-5 явных взаимодействий (покупка, добавление в избранное, детальный просмотр), система постепенно увеличивала вес предсказаний коллаборативной фильтрации (Implicit ALS) и гибридной модели, снижая вес глобального топа. Полный переход на персонализированные рекомендации происходил после 10+ взаимодействий.