Условие
Опишите стратегии для трёх вариантов 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.
Подводные камни
- Pure popularity для cold users: дает baseline, но не персонализацию. Mix с feature-based.
- Onboarding survey слишком длинный → drop-off. 3-5 items максимум.
- Item embedding из неполных метаданных: если description пустое, embedding почти нулевой. Fallback на category-level.
- Exploration too much: реальные users в первые дни могут быть недовольны качеством. Tune c.
- 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.