Холодный старт
Что делать когда нет данных — новый пользователь или новый товар
Проблема холодного старта
Холодный старт (cold start) — ситуация, когда у системы недостаточно данных для качественных рекомендаций. Это происходит в двух случаях: появился новый пользователь (мы ничего о нём не знаем) или появился новый товар (его никто ещё не оценивал).
Это одна из главных практических проблем RecSys. Коллаборативная фильтрация бесполезна без истории взаимодействий — а ведь каждый пользователь когда-то был новым, и каждый товар когда-то появлялся впервые.
Cold Start для пользователей
Новый пользователь зарегистрировался. У нас нет ни одного клика, ни одной оценки. Что рекомендовать?
Popularity Baseline
Самый простой подход — рекомендуем самое популярное. «Топ-10 фильмов недели», «Бестселлеры». Не персонализировано, но лучше, чем ничего. Netflix и YouTube используют этот подход как fallback для совсем новых пользователей.
Onboarding
Спрашиваем предпочтения при регистрации. Spotify просит выбрать любимых артистов, Netflix — оценить несколько фильмов, Pinterest — выбрать интересные темы. Это даёт начальный сигнал для персонализации.
Spotify Onboarding
Spotify просит выбрать 3+ артистов при регистрации. Этого достаточно, чтобы определить музыкальный вкус и начать рекомендовать. Каждый выбранный артист — кластер похожих пользователей.
Контентные фичи пользователя
Даже без истории взаимодействий мы можем знать возраст, пол, гео, устройство, время регистрации. По этим фичам находим похожих «тёплых» пользователей и рекомендуем то, что нравится им. Мужчина 25 лет из Москвы с iPhone — вероятно, имеет схожие предпочтения с другими мужчинами 25 лет из Москвы.
Bandit-based подходы (Explore vs Exploit)
Multi-armed bandits — элегантное решение cold start. Идея: балансируем между exploit (показываем то, что уже знаем будет интересно) и explore (показываем разное, чтобы узнать предпочтения быстрее).
- ε-greedy: с вероятностью ε показываем случайный товар, иначе — лучший
- UCB (Upper Confidence Bound): выбираем товар с наибольшей верхней границей доверительного интервала — больше неопределённость → больше шанс показать
- Thompson Sampling: сэмплируем из posterior-распределения reward и выбираем максимальный
Бандиты особенно хороши для новых пользователей: быстро «прощупывают» предпочтения за несколько показов, а потом переключаются на эксплуатацию.
Cold Start для товаров
Новый товар в каталоге. Его никто не покупал, не кликал, не оценивал. Коллаборативная фильтрация его «не видит». Как начать рекомендовать?
Контентные фичи товара
Используем описание, категорию, бренд, цену, изображения — всё, что знаем о товаре без взаимодействий. Если новый фильм — жанр sci-fi, режиссёр Нолан, рейтинг IMDB 8.5 — мы можем найти похожие фильмы и рекомендовать их аудитории.
Embeddings для связи с похожими товарами
Более продвинутый подход: получаем embedding нового товара из его фич (текст описания через BERT, изображение через ResNet) и находим ближайших соседей в пространстве эмбеддингов. Рекомендуем новый товар аудитории похожих «тёплых» товаров.
🎤 На собесе: как бы вы решали проблему холодного старта?
Структурируйте ответ: 1) Cold start для пользователей — popularity baseline, onboarding, демографические фичи, бандиты. 2) Cold start для товаров — контентные фичи, embeddings. 3) Упомяните, что на практике комбинируют несколько подходов. Бонус: расскажите про конкретный пример (Spotify onboarding, YouTube exploration).
Как решают cold start в реальных компаниях
- Netflix: onboarding (оценить фильмы) + popularity baseline + контентные фичи (жанр, актёры)
- YouTube: для новых пользователей — популярное + гео + демография. Для новых видео — анализ заголовка, описания, канала, thumbnail
- Spotify: onboarding (выбор артистов) + audio features (tempo, energy, danceability) для новых треков
- Amazon: контентные фичи товара (категория, бренд, описание) + «С этим товаром покупают» от похожих товаров
- TikTok: агрессивный exploration — новым пользователям показывают разнообразный контент и быстро обучаются на reactions
Итого
- Cold start — одна из главных практических проблем RecSys
- Для новых пользователей: popularity baseline → onboarding → демографические фичи → бандиты
- Для новых товаров: контентные фичи → embeddings → связь с похожими товарами
- На практике комбинируют несколько подходов и постепенно переключаются на персонализацию
- Бандиты (explore vs exploit) — мощный инструмент для быстрого изучения новых пользователей