Ответ
В рекомендательной системе, над которой я работал, проблема холодного старта решалась комбинацией нескольких не-Personalized подходов, пока не накапливалось достаточно данных для коллаборативной фильтрации.
Основные стратегии для нового пользователя:
-
Рекомендация самых популярных товаров (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 и количеством покупок -
Контентно-демографические рекомендации: Если при регистрации пользователь указал демографические данные (например, пол, город), мы рекомендовали популярные товары в его сегменте. Например: «Самые покупаемые кроссовки среди мужчин 25-35 лет в Москве».
-
Рекомендации по контексту сессии (Session-based): Для пользователя, который уже что-то смотрит, но еще не идентифицирован, использовались простые правила:
- „Похожие товары“: На основе заранее рассчитанных эмбеддингов товаров (например, через Item2Vec на исторических сессиях) или по общим тегам/категориям.
- „Часто покупают вместе“: Правила ассоциаций (Apriori), рассчитанные на исторических данных по корзинам.
-
Диверсификация (Exploration): Чтобы быстрее собрать данные о предпочтениях, небольшую долю рекомендаций (например, 1-2 слота из 10) отдавали под случайные товары из перспективных новых или низкорейтинговых категорий.
Переход к персонализации: Как только у пользователя фиксировалось более 3-5 явных взаимодействий (покупка, добавление в избранное, детальный просмотр), система постепенно увеличивала вес предсказаний коллаборативной фильтрации (Implicit ALS) и гибридной модели, снижая вес глобального топа. Полный переход на персонализированные рекомендации происходил после 10+ взаимодействий.