Разработка рекомендательной системы контента на Content-Based Filtering

Показы уходят не тем, кто готов выбирать, — точность подбора падает, а сильный контент остаётся незамеченным. Мы разрабатываем рекомендательные системы контента под ключ: разбираем ваши данные, настраиваем подбор и сопровождаем запуск. Доля релевантных показов растёт, а команда получает готовые модели и регламенты работы.
Часто задаваемые вопросы

Почему рекомендательная система контента теряет точность

Рекомендательная система контента ломается не в момент запуска, а через несколько недель работы, когда выдача стабилизируется и перестаёт реагировать на изменения. Формально подбор работает: блоки заполнены, ошибок нет, а доля целевых действий медленно сползает. Причина обычно не в нагрузке, а в том, что признаки расходятся с реальным поведением аудитории.

Каталог описывают по редакционным меткам — рубрика, тема, автор, формат. Пользователь выбирает по другому: по контексту просмотра, по тому, что открыл перед этим, на чём остановился. Когда точность подбора опирается только на описание материала, система уверенно советует похожее по меткам, но не по интересу, и каждый следующий показ уводит от цели, а не приближает к ней.

Отдельная точка отказа — холодный старт каталога. Новый материал не имеет истории взаимодействий, поэтому не получает показов, а без показов история не появится никогда. В выдаче остаются одни и те же позиции, свежие разделы не набирают отклик, и подбор постепенно перестаёт отражать то, что реально лежит в каталоге.

Третья причина — однообразие выдачи. Подбор, заточенный под усреднённый профиль, предлагает близкие по описанию материалы: пользователь видит пять похожих карточек и уходит. Круг замыкается: система читает такой отклик как подтверждение своих гипотез и сужает выдачу ещё сильнее. Разбираем, как это закрывается — от пересборки признаков до управления разнообразием.

Что меняется после внедрения: измеримые эффекты

Доля попаданий в интерес

Профиль пользователя собирается из признаков контента, который он действительно потреблял: тематика, автор, формат, длительность. Выдача опирается на совпадение свойств, а не на общую популярность, поэтому доля целевых действий — переходов, дочитываний, добавлений в избранное — растёт даже на узких тематиках.

Скорость появления новинок

Новый материал попадает в показы сразу после публикации: его признаки сравниваются с профилями, и он находит первых читателей практически без задержки. Ждать накопления статистики взаимодействий не нужно — контент не «висит» в каталоге, пока алгоритм наберёт данные.

Полнота охвата каталога

Показы распределяются по всему каталогу, а не концентрируются на нескольких популярных позициях. Доля материалов, получивших хотя бы один показ за период, растёт, и длинный хвост перестаёт быть мёртвым грузом — в том числе архивные публикации.

Повторные визиты

Когда пользователь регулярно получает релевантное, возврат становится привычкой: он знает, что найдёт своё без поиска. Растёт доля повторных визитов и глубина сессии — при том же каталоге и без ручной настройки под каждый сегмент.

Снижение ручных правок

Ручные подъёмы — самый дорогой способ поддержать выдачу, и они плохо масштабируются. После запуска доля ручных правок падает до точечных случаев: сезонные подборки, промо-блоки, ограничения по правам на материал.

Варианты подбора: как система выбирает показы

Источник сигнала у подходов разный: содержание самого материала, поведение пользователей с близкими интересами или сочетание двух. Что выбрать — зависит от объёма накопленной статистики и от того, как быстро обновляется каталог.

Вариант Когда подходит Ограничения
Контентная фильтрация Каталог растёт быстрее, чем набирается статистика по показам Профиль интереса сужается, непривычное показывается редко
Подбор по поведению похожих пользователей Есть история действий за несколько недель Новые материалы и новые пользователи выпадают из выдачи
Гибридный подбор Каталог смешанный: и свежее, и давно живущее Нужна настройка весов, иначе один сигнал перекрывает остальные

Профиль интереса и вес признаков

Профиль интереса — это признаки материала с весами: тема, автор, формат, свежесть, язык, источник. Каждое действие меняет вес: дочитывание и сохранение поднимают, быстрый возврат к списку опускает. Так профиль остаётся подвижным и отражает смену интереса, а не среднее за всё время.

Веса нормализуются между собой — иначе один активный признак перекрывает остальные и выдача схлопывается в одну тему. Признаки лежат в поисковом индексе Elasticsearch: пересборка ленты под текущий профиль идёт на лету, без пересчёта всей базы материалов.

Как мы внедряем подбор: этапы инженерной работы

Работу начинаем с данных, а не с формулы: пока связи «контент — интерес» не восстановлены, подбор выдаёт случайные карточки при любой аккуратной математике. Дальше идём шестью этапами.

  1. Разбор данных. Инвентаризация карточек, текстов, тегов, истории просмотров и оценок; отмечаем, каких признаков не хватает.
  2. Критерии успеха. Фиксируем, что считаем хорошей выдачей: попадание в топ-10, дочитывание, покрытие каталога. Без этого качество нечем измерять.
  3. Схема признаков. Описываем, как контент превращается в профиль: тематика, автор, теги, ключевые слова описания и вес каждого признака.
  4. Настройка подбора. Строим профиль интереса пользователя, считаем близость к контенту, отсекаем слабые совпадения порогом.
  5. Проверка качества выдачи. Считаем метрики на отложенной выборке, затем сверяемся с контрольной группой живой аудитории.
  6. Передача решения. Разворачиваем сервис, отдаём команде заказчика конфигурацию, схему признаков и регламент переобучения.

Подготовка данных

Тексты приводим к единому виду, схлопываем дубли, восстанавливаем пропущенные теги по описанию. На выходе — сопоставимый вектор для каждой позиции вместо полей в свободной форме.

Проверка качества выдачи

Офлайн-метрик недостаточно: они не показывают поведение подбора на новых позициях и незнакомых пользователях. Смотрим попадание в топ, разнообразие выдачи и распределение интересов — чтобы подбор не загонял человека в узкую тему.

Комплект поставки: модели, схемы и регламенты

Заказчику остаётся не только работающий подбор, но и всё, что нужно, чтобы сопровождать его своими силами. Комплект документации фиксирует, какие признаки участвуют в ранжировании, откуда они берутся и как проверяется их качество.

Что передаём в составе работ

  • Схема признаков: перечень полей, типы, источники, периодичность пересчёта и правила обработки пропусков.
  • Регламент обновления: как часто пересчитываются веса модели и какие метрики служат допуском к публикации.
  • Политики доступа к данным: роли, права на историю взаимодействий, обезличенные профили и служебные журналы.
  • Инструкции для редакции: как добавлять контент, какие поля обязательны, чтобы материал попал в выдачу.
  • Регламент проверки изменений: тестовый контур, критерии приёмки, порядок отката на предыдущую версию.
  • Каталог признаков с описанием хранилища, где они лежат — у нас это PostgreSQL.
  • Журнал экспериментов: какие гипотезы проверялись и почему часть из них отклонена.

Порядок сопровождения

После передачи мы остаёмся на связи: разбираем инциденты по качеству выдачи, помогаем с пересчётом признаков при изменении каталога, консультируем редакцию по спорным материалам. Плановые пересчёты идут по расписанию из регламента обновления, внеплановые — только через тестовый контур с прогоном контрольной выборки. Если метрики падают ниже порога, возвращаемся к предыдущему набору весов без остановки выдачи.

Кейс: рост точности подбора в интернет-магазине

Исходная ситуация

Каталог интернет-магазина на 1С-Битрикс собирался вручную: категорийный менеджер раз в неделю отбирал товары по прошлым продажам и выкладывал их в блоки на главной и в карточках. Показывалась примерно пятая часть каталога, новинка ждала первого показа около двух недель, а доля попаданий в интерес держалась на уровне 11% — посетитель открывал карточку и уходил.

Корень проблемы в том, что ручная подборка опирается на продажи, а они есть только у верхушки. Позиции, не попавшие в блоки, не получают показов и не набирают статистику — круг замыкается, и каталог сам из него не выходит.

Что дала контентная фильтрация

Ручные блоки заменили на подбор по атрибутам: профиль интереса строится из названия, описания, категории, материалов и свойств конкретного товара, а затем сопоставляется с историей просмотров посетителя. Пересчёт идёт по мере появления новых позиций, поэтому новинке не нужно ждать накопления продаж.

Доля попаданий в интерес выросла с 11% до 34%, охват каталога — с 20% до 88%, а первый показ новой позиции занимает меньше суток вместо двух недель. Ручные подборки остались только под акции: менеджер задаёт условия, а не перебирает товары. Метрики считали на отложенном периоде, затем подтвердили на живой аудитории с группой сравнения.

Чем контентная фильтрация отличается от коллаборативной

Оба подхода решают одну задачу — показать пользователю то, что он с высокой вероятностью откроет, — но опираются на разные источники сигнала. Контентная фильтрация описывает сам объект: тему, автора, теги, текстовые и векторные признаки. Совместная фильтрация смотрит не на объект, а на матрицу взаимодействий и достраивает связи по поведению похожих пользователей.

Подход На чём работает Где силён Ограничение
Контентная фильтрация Признаки самих объектов Новые материалы, узкие каталоги Замыкает на уже интересном
Совместная фильтрация История взаимодействий Плотный трафик, неожиданные находки Холодный старт, разреженность данных
Гибрид Оба источника сигнала Смешанный спрос, обновляемый каталог Нужна настройка вклада каждого

Разница видна на краях. Контентная фильтрация стартует без данных о поведении, но плохо выводит за пределы знакомой темы. Совместная даёт неожиданные связи, однако упирается в холодный старт нового пользователя и разреженность данных в узких разделах.

Выбор подхода определяется тем, чего в системе больше — описаний объектов или поведения. При ежедневно обновляемом каталоге и небольшой аудитории опора на содержание даёт отдачу сразу; при плотном трафике точнее работают поведенческие связи.

На практике чаще выигрывает гибрид: содержание закрывает холодный старт и свежие материалы, совместный режим уточняет выдачу на накопленных данных. Мы собираем оба контура и настраиваем их вклад по замерам на живом трафике.

Частые технические вопросы по внедрению

Чаще всего вопросы на старте касаются не самого алгоритма, а поведения системы на реальных данных: короткой истории взаимодействий и каталоге, который меняется каждую неделю. Ниже — то, что мы разбираем с технической стороной заказчика до старта работ.

Подход Content-Based Filtering опирается на признаки самого контента и профиль интересов пользователя, а не на массовую историю взаимодействий, поэтому осмысленная выдача возможна и при разреженных данных.

Что делать, если о поведении пользователей почти нет данных?

Профиль интересов собирается из явных сигналов — выбранных позиций, запросов, оценок — и признаков самого контента. По мере накопления истории вес поведенческих сигналов растёт, и система переходит от контентных правил к персонализации без перезапуска.

Каталог обновляется каждую неделю — придётся всё переобучать?

Нет. Новые позиции индексируются по признакам и попадают в выдачу сразу, без полного пересчёта. Полный пересчёт профилей идёт по расписанию и не блокирует работу системы.

Можно ли объединить признаки содержания и поведения?

Да, смешанный подбор обычно и даёт лучший результат: контентные признаки обеспечивают покрытие всего каталога, включая новинки, поведенческие — точность ранжирования. Баланс задаётся объёмом истории у конкретного пользователя.

Как проверяем, что выдача действительно стала лучше?

Сравниваем офлайн-метрики на отложенной выборке с онлайн-срезом: доля попаданий в топ, разнообразие выдачи, доля пользователей с непустой рекомендацией. После запуска следим за дрейфом признаков — это часть сопровождения.

Обсудим задачу и вернёмся с оценкой и планом

Чтобы обсудить задачу предметно и вернуться с оценкой и планом, опирающимися на факты, а не на предположения, нужен короткий разбор с вашим продуктовым и техническим контуром. По опыту трудоёмкость рекомендательной системы контента определяют не алгоритмы, а исходные данные и допуски к ним — поэтому часть вопросов стоит закрыть до встречи.

Что пригодится со стороны заказчика:

  • Исходные данные: каталог контента с метаданными, история взаимодействий (просмотры, дочитывания, сохранения, пропуски), тексты и тематическая разметка, если она есть.
  • Объём и качество истории: за какой период накоплены действия, какая доля приходится на новых пользователей, есть ли дубли и записи без признаков.
  • Допуски к данным: что можно использовать для обучения, что требует обезличивания, какие сроки хранения и региональные требования действуют.
  • Критерии успеха: что считаем улучшением — долю релевантных показов, глубину сессии, удержание, покрытие каталога. Без согласованных метрик настройка превращается в спор о вкусах.
  • Ограничения и окружение: где работает система, какой отклик нужен в часы пик, как она встраивается в текущий слой выдачи и что нельзя ломать.
  • Участники и решения: кто отвечает за выгрузку данных, кто принимает результат и кто согласует изменения в продуктовой логике.

Опишите задачу — вернёмся с оценкой и планом: этапами, составом работ, требованиями к данным и точками контроля.

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139