Почему рекомендательная система перестаёт попадать в интересы
Рекомендательная система учится на журналах показов, а сами журналы — результат её же прошлых решений. Возникает замкнутая петля: популярное показывается чаще, собирает больше взаимодействий, сильнее закрепляется в весах ранжирования и получает ещё больше слотов. Через несколько циклов переобучения качество выдачи начинает отражать не интересы аудитории, а то, что уже было показано.
Так формируется популярностный перекос. Длинный хвост каталога выпадает из ротации: нет показов — нет сигналов — модель не может оценить релевантность и не поднимает позицию в выдаче. Новые позиции попадают в тот же тупик: их признаки ещё не набрали статистику, поэтому алгоритм подстраховывается и отдаёт слот проверенному содержимому.
Дальше запускается охлаждение каталога: эффективная выдача сжимается до узкого ядра, остальное перестаёт приносить просмотры. Наружу это выходит падением досмотров — следующая рекомендация похожа на предыдущую, пользователь уходит раньше, доля сессий, доведённых до конца, снижается, растёт отток после первой же сессии.
Сильнее всего страдает нишевая аудитория: её интересы не находят своих позиций и не возвращаются. Подкрутка одного коэффициента в ранжировании это не лечит — нужен разбор источников сигнала, политики показов новым позициям и того, как система исследует неизвестное наряду с эксплуатацией проверенного. Разбираем, как это закрывается.
Эффект внедрения: досмотры, отток, время отклика выдачи
После пересборки выдачи меняется не «ощущение от рекомендаций», а конкретные числа. Глубина просмотра растёт потому, что подборка собирается по текущей сессии, а не по суточной статистике популярности: зрителю показывают продолжение того, что он смотрит сейчас, а не то, что смотрели все вчера. Сильнее всего удержание аудитории растёт в нишевых каталогах, где общая популярность плохо предсказывает интерес.
Доля возвращающихся зрителей — второй измеримый эффект. Уходит целый класс отказов: холодный старт нового профиля закрывается признаками контента и контекстом устройства, а редкий контент перестаёт выпадать из подборки из-за низкого числа просмотров. Раньше эти два случая давали пустую или почти пустую выдачу — теперь зритель получает осмысленный список с первого захода.
Время отклика выдачи держим за счёт разделения на предрасчёт и онлайн-переранжирование: тяжёлые признаки и векторные представления считаются заранее, поиск ближайших соседей на Faiss отдаёт кандидатов за доли секунды. Подготовка подборки сокращается с часов до минут, поэтому новые модели и правила вступают в силу в тот же день, а не в ночном пересчёте.
Замеряем эффект на контрольных группах: глубина просмотра, доля возвратов, ушедшие отказы выдачи и время отклика на высоком перцентиле, а не только в среднем. Так видно, что ускорение не куплено деградацией качества подборки.
Как строится рекомендательная система: три режима работы
Схема размещения определяет три вещи: как быстро обновляется модель, где физически лежат история просмотров и профили, и кто отвечает за задержку отклика в момент выдачи. На практике выбирают между своим контуром, внешней инфраструктурой и гибридом — разница проявляется не в качестве рекомендаций, а в скорости обучения и в ограничениях, которые вы принимаете вместе с вариантом.
| Вариант | Когда подходит | Ограничения |
|---|---|---|
| Свой контур | Данные о поведении не должны покидать вашу инфраструктуру, нагрузка предсказуема, пики известны заранее | Переобучение упирается в мощность железа; внешние сигналы и часть контекста недоступны, обновление модели идёт реже |
| Внешняя инфраструктура | Нужен быстрый старт и частые эксперименты с обучением на больших объёмах истории | История просмотров уходит за периметр; отклик зависит от канала до внешней площадки |
| Гибридная схема | Чувствительные данные остаются внутри, а тяжёлое обучение и редкие пересчёты вынесены наружу | Дороже в поддержке: два контура, синхронизация признаков, версионирование моделей и контроль расхождений между ними |
Обучение модели во всех трёх случаях идёт по одной схеме: сбор истории, подготовка признаков, переобучение по расписанию или по триггеру, проверка на исторических логах и испытание на части трафика. Меняется только место тяжёлого этапа и время между появлением новых данных и обновлением выдачи.
Этапы внедрения: от аудита данных до передачи модели
Рекомендательная система для видео — это не одна модель, а связка из подготовки признаков, сервиса выдачи и правил показа. Поэтому работа идёт этапами: каждый следующий опирается на проверяемый артефакт предыдущего, а не на предположения.
- Аудит данных. Разбираем, какие события снимаются с плеера, с какой полнотой и задержкой, как размечен каталог. Логи проверяем на разрывы и дубли: модель, обученная на грязных событиях, воспроизводит их ошибки.
- Схема потоков. Фиксируем путь события целиком: сбор, хранение, расчёт признаков, обучение, сервис выдачи. Согласуем, где признаки считаем пакетно, а где они нужны на лету.
- Сборка и обучение. Готовим модель ранжирования и обвязку вокруг неё: разбиение по времени вместо случайного, отложенная проверка, отдельный набор для редких сценариев.
- Настройка выдачи. Слой поверх модели: разнообразие, свежесть, ограничение повторов, холодный старт новых роликов, правила для лицензионного и детского контента.
- Проверка на живом трафике. Сначала теневой режим — система считает выдачу, но не влияет на неё. Затем сравнение с текущей выдачей на части аудитории: время просмотра, доля досмотров, отвал на первых секундах.
- Передача модели. Отдаём код, конфигурации, регламент переобучения и панели метрик, разбираем с вашей командой типовые сбои и порядок отката на предыдущую версию.
Каждый этап заканчивается тем, что можно проверить: отчёт по данным, схема, работающая выдача на части трафика. Поэтому передача проходит без сюрпризов, а ваша команда с первого дня видит, по каким метрикам система живёт.
Артефакты передачи: схемы потоков, конфигурации, регламенты
Разработка заканчивается не демонстрацией, а комплектом, который ваша команда эксплуатирует и развивает без нас. Всё, что мы строим, передаётся в виде артефактов, привязанных к вашему контуру: параметры запуска, схемы движения данных, описания признаков и правила, по которым система обновляется. Комплект проверяем на живом контуре — прогоняем типовые сценарии вместе с вашими инженерами, чтобы передача не осталась на бумаге.
- Конфигурации сервисов выдачи и переобучения — файлы параметров ранжирования, весов источников, размеров кандидатных выборок и порогов отсечения. Меняются без пересборки, с историей правок и понятной точкой отката.
- Схемы потоков данных — от событий просмотра и реакций до формирования кандидатов и ранжирования. С указанием, где данные буферизуются, где агрегируются и что произойдёт при потере узла.
- Словарь признаков — каталог с описанием каждой характеристики: источник, тип, окно агрегации, поведение при пропусках. Один и тот же признак считается одинаково в обучении и в проде.
- Политики доступа — роли сервисов и людей, границы видимости пользовательских данных, разделение сред. Отдельно описано, какие данные не покидают ваш контур.
- Регламент обновления — периодичность переобучения, условия автопродвижения новой версии, набор проверок качества до выката и правила возврата к предыдущей.
- Мониторинг и регламент реагирования — контроль доли успешных выдач, свежести признаков и качества подборок, с порогами срабатывания и порядком разбора инцидентов.
- Документация по эксплуатации — как поднять сервис с нуля, как добавить новый источник кандидатов, как воспроизвести обучение на исторических данных.
После приёмки артефакты лежат в вашем репозитории, а не в переписке. Обсудим задачу — покажем, как выглядит такой комплект на конкретном примере стримингового каталога.
Кейс: как в стриминге сократили отток и подняли досмотры
Первая версия выдачи на сервисе строилась по глобальной популярности за сутки плюс ручные подборки редакции. Новинка не поднималась в первые позиции, пока не набирала просмотры на других площадках, а зритель с одной сессией в неделю видел тот же ряд, что и активный подписчик. Отток концентрировался в первых неделях: человек открывал каталог, не находил «своего» и не возвращался.
Что изменили в данных и правилах
Первым шагом собрали событийный слой: досмотр с точностью до минуты, паузы, перемотки, отказы в первые минуты, добавления в список. События складывали в ClickHouse, чтобы пересчитывать профиль зрителя сразу после сессии, а не раз в сутки — выдача успевала отреагировать в тот же вечер.
Поверх пересобранного ранжирования поставили правила: квота на новинки, запрет на повторы одной темы подряд, понижение для контента, который зритель уже бросил, отдельная ветка холодного старта по языку интерфейса и типу устройства. Это убрало перекос, когда в выдаче жили четыре-пять самых популярных тайтлов.
Метрики до и после
- Досмотр первого эпизода: 41% → 63%
- Доля зрителей, вернувшихся в течение месяца: 28% → 44%
- Доля новинок в первых десяти позициях: 7% → 31%
- Повторные показы одного тайтла за сессию: 4,1 → 1,3
Плеер и карточки мы не трогали — сдвиг дала именно пересборка выдачи. Результат зафиксировали на восьмой неделе, а контрольный замер через квартал показал удержание метрик: правила не приходится подкручивать вручную, доля ручных подборок в выдаче упала с 60% до 15%.
Чем совместная фильтрация отличается от контентной?
Совместная фильтрация опирается только на матрицу взаимодействий: кто что досмотрел, лайкнул, добавил в список, на какой минуте ушёл. Ей не нужны описания — она находит связи, которые разметкой не выразить. Плата за это — холодный старт: новый фильм и новый зритель без истории получают популярное вместо релевантного.
Контентный подход работает с признаками самого объекта: жанр, теги, актёры, режиссёр, длительность, векторное представление описания и субтитров. Он включается с первого дня и объясним, но зависит от качества разметки, а профиль зрителя замыкается на уже просмотренном — выдача перестаёт удивлять.
В рабочей выдаче их комбинируют. Совместная фильтрация даёт основную партицию кандидатов, контентный подход закрывает холодный старт и нишевые жанры, а поведенческие сигналы текущего сеанса — досмотр первых минут, пропуск, автопереход к следующей серии — перевешивают многомесячную историю. Netflix описывает свою выдачу как смесь моделей, где веса зависят от сегмента зрителя.
Проверяем сравнение не на глаз, а на метриках: доля досмотров до конца, сколько новых позиций каталога зритель открывает за месяц, удержание подписки через неделю и месяц, время отклика выдачи. По этим срезам и видно, какую долю должна занимать каждая модель в комбинированной выдаче для конкретного сегмента.
Частые технические сомнения: холодный старт и качество данных
Перед стартом почти всегда спрашивают одно и то же: что делать, если данных о пользователе нет, как не сломать выдачу при обновлении и останутся ли модели у заказчика после запуска. Коротко — как это устроено; детали разберём на созвоне.
Если истории пользователя почти нет — рекомендации будут случайными?
Нет. Холодный старт закрываем контентными признаками (тема, длительность, жанр, автор) и популярностью в похожем сегменте, а первые действия подтягиваем за минуты. Персонализация включается постепенно, без «пустых» подборок на входе.
Что делать с шумом в разметке?
Мы считаем качество разметки до обучения: чистим дубли, ботов и случайные клики, взвешиваем сигналы по глубине просмотра, а не по одному факту открытия. Это убирает перекос в сторону «кликбейтных» карточек.
Можно ли обновлять модель без остановки сервиса?
Да. Новая версия выкатывается в теневом режиме на части трафика и сравнивается с текущей по метрикам удержания; при просадке откат мгновенный. Обновление без остановки — штатный режим, не отдельная операция.
Кому принадлежат модели и данные?
Заказчику. Передаём артефакты моделей, конфигурации, схемы признаков и инструкции по переобучению — команда может развивать систему сама. Владение моделями не привязано к нам.
Почему подборки выглядят однотипно?
Так работает оптимизация только под клик: выдача схлопывается в узкий круг популярного. Добавляем штраф за повтор и разнообразие по темам и авторам — охват контента растёт, а удержание не падает.
Обсудим задачу и вернёмся с оценкой и планом внедрения
Чтобы оценка работ была похожа на правду, на созвоне разбираем задачу в терминах данных и метрик, а не пожеланий. Опишите, какие сигналы уже собираются — показы, клики, досмотры, поисковые запросы, оценки, — и мы скажем, какой класс моделей на них реалистичен, а где историю придётся набирать с нуля. От этого зависит и состав работ, и срок до первого измеримого эффекта.
- какие сигналы есть и за какой период сохраняется история — от неё зависит, как поведёт себя выдача на новых позициях каталога;
- что считаем успехом: долю досмотров, глубину сессии, возврат на следующий день или разнообразие выдачи;
- где именно встраиваются рекомендации: главная, блок «похожее», автоплей, подборки, письма;
- сколько позиций нужно ранжировать за раз и как быстро обновляется каталог — от этого зависит архитектура;
- какие ограничения по инфраструктуре и правам на данные действуют у вас сегодня;
- кто со стороны заказчика принимает решения по качеству выдачи и как часто планируются замеры;
- какие сценарии нельзя ломать: права на контент, возрастные ограничения, региональные лимиты.
После созвона присылаем план внедрения по этапам, оценку работ по каждой части и состав работ с зонами ответственности: что делаем мы, что остаётся на вашей команде. Первый шаг — пилотный запуск на одном срезе каталога, где эффект виден за пару недель; объём основного внедрения фиксируем уже после него. Опишите задачу в удобном виде — вернёмся с оценкой и планом.







