Розробка рекомендаційної системи контенту на 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
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141