Зображення статті
## Рекомендаційні системи в медіа: унікальний контекст
Рекомендаційні системи в медіа відрізняються від класичного e-commerce. У магазині ціль рекомендацій очевидна: купівля. У медіа цілей кілька і вони часто конфліктують:
- **Engagement:** утримати читача якомога довше
- **Глибина читання:** спрямувати до «важливих» матеріалів, а не лише клікбейту
- **Різноманітність:** уникнути «інформаційного міхура», де читач бачить лише підтверджуючий контент
- **Монетизація:** балансувати між редакційними та рекламними матеріалами
- **Місія видання:** зберігати редакційну ідентичність
Додайте до цього загибель third-party cookies і GDPR/CCPA — і задача стає ще цікавішою.
## Виклик cookieless world
До 2024 року більшість медіа-рекомендацій спиралась на third-party cookies: ви читали статтю про автомобілі на одному сайті, і рекомендаційна система іншого сайту це «знала». Тепер цього немає.
**Що залишилось:**
- First-party дані (зареєстровані користувачі)
- Сесійні сигнали (поточна сесія без ідентифікації)
- Контентні сигнали (що подібне до поточної статті)
- Контекстуальні сигнали (час доби, пристрій, реферер)
Для більшості медіа більшість відвідувачів — анонімні (70–90%). Це кардинально змінює архітектуру рекомендаційної системи.
## Архітектура рекомендаційної системи для медіа
### Рівень 1: Контентна фільтрація (Content-Based Filtering)
Контентна фільтрація не потребує знання про користувача взагалі. Вона відповідає на запитання: «Що схоже на те, що читач переглядає прямо зараз?»
**Підхід 1: TF-IDF + косинусна схожість**
Класичний і надійний. Кожна стаття — вектор ключових слів (TF-IDF ваги). Схожість визначається через косинусну відстань між векторами.
**Переваги:** прозорий, не потребує даних, швидкий.
**Обмеження:** не вловлює семантичну схожість («автомобіль» і «машина» — різні слова).
**Підхід 2: Text Embeddings**
Сучасні трансформерні моделі (multilingual-e5, paraphrase-multilingual-mpnet) генерують густі вектори, що відображають семантику. Статті про «електромобілі» і «Tesla» будуть близько у просторі ембедингів, навіть без спільних слів.
**Практична реалізація:**
- Завантажити модель (наприклад intfloat/multilingual-e5-small для ресурсоефективності)
- Згенерувати ембединги для всіх статей (заголовок + лід)
- Зберігати у векторній базі (Qdrant або Faiss)
- При кожному запиті — знайти N найближчих сусідів
**Переваги:** семантичне розуміння, мовонезалежність.
**Обмеження:** потребує GPU для індексування великих бібліотек, ембединги потрібно оновлювати при нових статтях.
### Рівень 2: Сесійні рекомендації
Навіть без cookies ви знаєте, що читач переглянув у поточній сесії. Сесійні рекомендаційні системи використовують цю послідовність.
**Метод: Session-based Collaborative Filtering**
Популярний підхід — BERT4Rec або GRU4Rec. Ці моделі навчаються на послідовностях переглядів: «читач переглянув статтю A → B → C, що буде D?»
**Альтернатива: Session к-NN**
Простіший підхід: знайти минулі сесії, схожі на поточну (за послідовністю переглядів), і рекомендувати те, що читали в тих сесіях.
**Перевага сесійних методів:** не потребують ідентифікації користувача, добре працюють на анонімному трафіку.
### Рівень 3: Для авторизованих користувачів
Для зареєстрованих читачів (підписники, зареєстровані) доступна повна потужність колаборативної фільтрації на history.
**Matrix Factorization (ALS):** класика для implicit feedback (перегляди, а не явні оцінки). Бібліотека implicit для Python.
**Neural Collaborative Filtering:** нейромережевий аналог, краще вловлює нелінійні залежності.
**Two-Tower модель:** окремі нейромережі для користувача і контенту, dot product для scoring. Масштабується до мільярдів пар.
## Балансування між engagement і редакційними цілями
Це ключова відмінність медіа від e-commerce. Максимізація CTR або часу на сайті — не завжди місія видання.
### Проблема filter bubble
Чиста колаборативна фільтрація схильна до гомогенізації: читачам показують все більше однотипного контенту, бо вони на нього кликають. Читач, що цікавиться лише спортом, ніколи не побачить важливих новин з інших розділів.
**Рішення:**
- **Exploration bonus:** додавати до score нових або недооцінених статей з інших категорій
- **Diversity penalty:** штрафувати рекомендації, що занадто схожі між собою
- **Editorial pinning:** певні позиції в рекомендаціях завжди зайняті редакційними пріоритетами
### Freshness і decay
Новини «протухають» набагато швидше, ніж товари в e-commerce. Стаття про вчорашню подію має отримувати нижчий score, ніж свіжа.
**Temporal decay:** множити relevance score на decay-функцію від часу публікації:
python
def temporal_score(base_score, published_at, half_life_hours=24):
hours_ago = (now - published_at).total_seconds() / 3600
decay = 0.5 ** (hours_ago / half_life_hours)
return base_score * decay
Half-life підбирається під конкретне видання: для новин — 4–12 годин, для аналітики — 7–30 днів.
## Оцінка якості рекомендацій для медіа
### Онлайн-метрики
**Click-Through Rate (CTR):** базова метрика, але не єдина.
**Depth of engagement:** кількість статей за сесію, час читання.
**Return rate:** чи повертається читач через рекомендації?
**Diversity:** середня попарна відстань між рекомендованими статтями (вища = різноманітніше).
### Офлайн-метрики
**Recall@K:** яка частка реально переглянутих статей потрапила в топ-K рекомендацій?
**NDCG (Normalized Discounted Cumulative Gain):** враховує позицію у списку рекомендацій.
### A/B тест з care
Медіа-видання мають бути обережні з A/B тестами рекомендацій: короткостроковий CTR може зростати від сенсаційних заголовків, але довгострокова лояльність читача — падати. Вимірюйте subscription rate і 30-денний retention, а не лише сесійний CTR.
## Технічна архітектура рекомендаційного сервісу
**Online vs Offline:**
- Офлайн: навчання моделей, генерація ембедингів (щодня або щогодини)
- Online: real-time scoring і retrieval (< 100 мс)
**Кешування:** pre-computed рекомендації для популярних статей (топ-1000 за трафіком).
**Candidate generation → Re-ranking:**
1. Retrieval: швидко отримати 100–500 кандидатів (вектор пошук або популярність)
2. Re-ranking: більш складна модель переранжовує кандидатів з урахуванням усіх сигналів
**Моніторинг:** логування всіх показів і кліків → daily pipeline для оцінки метрик → дашборд.
Рекомендаційні системи для медіа — складніші, ніж для e-commerce, бо балансують між алгоритмічною ефективністю і редакційними цінностями. Найкращі системи не «максимізують кліки», а допомагають читачу знаходити контент, що збагачує його — і повертатись знову.
Стаття в розробці. Підпишіться щоб отримати сповіщення.
Написати нам →#рекомендаційні системи#медіа#персоналізація
ДК
Дарина Кравченко
Команда CodeNest
Практикуючий ML-інженер. Спеціалізується на побудові виробничих AI-систем для бізнесу.
🤖
Готові автоматизувати ваш бізнес?
Обговоримо ваш проєкт і запропонуємо оптимальне рішення. Безкоштовна консультація без зобов'язань.