Проблема холодного старта
Урок разбирает холодный старт — ситуацию, когда у нового пользователя или товара нет истории, и коллаборативные методы беспомощны.
Холодный старт — это проблема рекомендаций для объекта без накопленных взаимодействий: нового пользователя, нового товара или совсем новой системы.
Три вида холода
Коллаборативные методы и матричное разложение питаются историей взаимодействий. Когда истории нет, питаться нечем.
- Новый пользователь. Только зарегистрировался — система не знает его вкусов, у него нет вектора факторов и нет «соседей».
- Новый товар. Только появился в каталоге — его никто не оценивал, CF не может найти ему похожих по поведению, и он рискует навсегда остаться невидимым.
- Новая система. Платформа только запустилась — взаимодействий почти нет у всех сразу.
Стратегии для нового пользователя
- Популярное как фолбэк. Пока нет данных — показываем сглаженный топ (см. урок про baseline). Просто и всегда работает.
- Онбординг-опрос. Спросить пару любимых жанров/товаров при регистрации — и сразу получить минимальный профиль.
- Контекст без истории. Геолокация, устройство, источник перехода, время суток — слабые, но небесплатные сигналы.
- Быстрое дообучение. Уже после нескольких кликов профиль начинает наполняться — важно реагировать в реальном времени.
Стратегии для нового товара
Здесь спасают контентные признаки: у товара есть категория, бренд, описание, цена — даже без единой покупки. По этим признакам новый товар можно поставить рядом с похожими и начать показывать. Это прямой мост к контентным рекомендациям следующего раздела.
# фолбэк-логика: CF, если есть история, иначе контент/популярное
def recommend(user_history, content_neighbors, popular):
if len(user_history) >= 3:
return ("collaborative", "персональная лента по истории")
if content_neighbors:
return ("content", "похожие по признакам товары")
return ("popular", popular[:3])
print(recommend(["A", "B", "C", "D"], [], []))
print(recommend([], ["X", "Y"], []))
print(recommend([], [], ["hit1", "hit2", "hit3", "hit4"]))Вывод:
('collaborative', 'персональная лента по истории')
('content', 'похожие по признакам товары')
('popular', ['hit1', 'hit2', 'hit3'])Как работает под капотом
В продакшене холодный старт почти всегда решают гибридом: маршрутизатор смотрит, сколько у объекта истории, и выбирает источник. Мало истории → контентная или популярностная ветка; достаточно истории → коллаборативная. По мере накопления взаимодействий вес коллаборативной части плавно растёт. Отдельная важная тактика — исследование (exploration): иногда специально показывать новые товары, чтобы собрать по ним первые сигналы и вывести их из холода.
Частые ошибки
- Оставлять новичка с пустым экраном. Всегда нужен фолбэк (популярное), иначе пользователь уходит.
- Хоронить новые товары. Без exploration свежие товары никогда не наберут историю и застрянут в холоде.
- Ждать «достаточно данных» слишком долго. Профиль надо начинать строить с первых же действий.
Итоги
- Холодный старт бывает у нового пользователя, нового товара и новой системы.
- CF и факторные модели без истории бессильны — нужен фолбэк.
- Новому пользователю помогают популярное, онбординг и контекст; новому товару — контентные признаки.
- Продакшн решает холод гибридом плюс exploration новых объектов.