Моделі персоналізації
Моделі персоналізації
Персоналізація - це система, де дані → моделі → політика показу → дія → зворотний зв'язок. Мета - максимізувати інкрементальну цінність (дохід/утримання/задоволеність) при дотриманні обмежень (етика/RG, частотні капи, різноманітність, свіжість, SLA).
1) Дані та подання
Сировина: події (перегляди/кліки/ігри/покупки/депозити), контент-каталог (атрибути), призначені для користувача профілі, контекст (час/гео/пристрій/канал), сигнали якості (бот/фрод).
Фічі:- User: RFM, переваги категорій, цінова чутливість, час доби, пристрій.
- Item: жанр/категорія, студія/провайдер, мова, ціна/волатильність, «свіжість».
- Context: dow/hod, промо/івенти, сесія, канал входу.
- Ембеддинги: спільні простори user/item (MF/Word2Vec2Rec/transformers), мультимодальні (текст/зображення).
- Якість: point-in-time (без ликів), UTC-час, ідемпотентність подій, маскування PII.
2) Базові парадигми
1. Content-based - близькість за ознаками айтему і профілю користувача.
2. Колаборативна фільтрація (CF) - схожі користувачі/айтеми за сигналами взаємодії.
3. Матрична факторизація/ембеддинги - приховані фактори, dot-product/MLP для score.
4. Learning-to-Rank (LTR) - градієнтний бустинг/нейромережі для ранжирування списків (pairwise/listwise).
5. Re-ranking шару - post-processing з урахуванням диверсифікації/новизни/обмежень.
6. Контекстні бандити - онлайн-навчання з exploration-exploitation.
7. RL/seq-рекомендації - оптимізація шляху/сесії (багатошагова нагорода).
3) Конвеєр прийняття рішення
1. Recall (швидкий відбір кандидатів, 200-5k): ANN з ембеддингів, правил-бейс/категорія, популярність.
2. Rank (точний скоринг, 20-200): LTR/MLP з багатими фічами.
3. Re-rank/Policy (фін. список, 5-30): багатоцільова оптимізація + обмеження і диверсифікація.
4. Action: показ/пуш/е-mail/персональна вітрина з капами і «тихим годинником».
5. Feedback: implicit/explicit сигнали → перенавчання/бандит-оновлення.
4) Багатоцільові цілі та обмеження
Цілі: CTR/CTCVR, утримання, виручка, маржа, LTV, задоволеність, швидкість.
Обмеження: частота контактів, RG/комплаєнс, різноманітність категорій, квоти брендів/провайдерів, fairness.
[
\max \sum_i w_i \cdot \text{Objective}_i \quad
\text{s. t. } \text{caps, RG, diversity, SLA}
]
Практика: робіть policy-aware re-ranking (див. § 7), де швидкий об'єднаний з правилами.
5) Холодний старт і малі дані
Нові користувачі: популярність по сегменту/каналу/гео, контент-based по анкеті/першому кліку, бандит з широкою розвідкою.
Нові айтеми: контент-ембеддинги (текст/теги), метадані, «look-alike» за провайдером/жанром.
Few-shot: перенесення ембеддингів/мульти-задачність (shared tower).
6) Метрики оцінки
Оффлайн
Класифікація/ранжування: AUC/PR-AUC, NDCG@k, MAP, Recall@k.
Бізнес: eCPM/eRPM, очікуваний дохід/маржа, LTV proxy.
Багатоцільові: зважені метрики (наприклад, NDCG з gain = цінність).
Калібрування: Brier, ECE (для ймовірностей).
Списки: coverage/diversity/novelty/serendipity.
Онлайн
A/B і бандитні тести: CTR, CTCVR, дохід/сеанс, утримання D1/D7, скарги/відписки (guardrails), latency/SLA.
Інкремент: lift%, CUPED/квазіексперименти при складній рандомізації.
7) Диверсифікація і policy-aware re-ranking
MMR/PM-2/xQuAD: баланс «релевантності × новизни».
Квоти: min/max за жанрами/провайдерам/ризиковим категоріям.
Fairness: обмеження часток для уникнення систематичних перекосів.
[
\textstyle \text{Score} = \alpha \cdot \hat{p}_{\text{click}} + \beta \cdot \text{Value} - \gamma \cdot \text{Fatigue} + \delta \cdot \text{Novelty}
]
Гістерезис: не «блимати» списками; оновлюйте позиції з інерцією.
8) Контекстні бандити і RL
Бандити (LinUCB, Thompson): швидкий online-learn, контроль exploration. Гарні для першої позиції/креативу/каналу.
Каскадні бандити: оптимізація top-k.
RL (DQN/Policy Gradient/SlateQ): сесійна персоналізація, оптимізація багатокрокової нагороди (повернення/виручка/довга сесія).
Безпека: офф-полісі оцінка (IPS/DR), симулятори, капи на дослідження, safe RL.
9) Персоналізація під причинний ефект
Uplift-моделі: кого варто чіпати (persuadables), Qini/AUUC, uplift @k.
Treatment-aware ранжування: включайте ймовірність інкременту замість «сирого» CTR.
Guardrails: Do-Not-Disturb сегменти, RG-правила, fairness.
10) Архітектура і MLOps
Feature Store: онлайн/офлайн паритет, point-in-time, TTL для сесійних фіч.
Candidate services: ANN/FAISS/ScaNN, кешування/шардинг по сегментах.
Ranker: градієнтний бустинг/MLP/Tower-архітектури, калібрування.
Policy/Re-rank: правила/обмеження, диверсифікація, бандитний шар.
Оркестрація: ідемпотентність запитів, p95 latency ≤ 100-300 мс, DLQ/ретраї.
Спостережуваність: трасування'correlation _ id', фіч-дрифт (PSI), метрики якості, «стоп-кран».
11) Безпека, приватність, етика
PII-мінімізація: токенізація, RLS/CLS, маскування.
Пояснюваність: top-features/причини показу; шлях апеляції.
Етика/RG: частотні капи, «тихий годинник», заборони на агресивні оффери у вразливих груп.
Комплаєнс: аудит рішень/логів, версії політик і креативів.
12) Паспорти та decision tables
Паспорт рекомендатора (приклад)
ID/версія: `REC_HYBRID_RANK_v5`
Recall: ANN (user/item embeddings), top-500
Ranker: LTR-GBM + MLP (features: user RFM, item meta, context)
Re-rank: PM-2 (diversity), квоти брендів, RG-фільтри, частотні капи
Цілі/метрики: NDCG @ 10, eRPM, zhaloby≤Kh, latency p95≤150 мс
А/В: 14 днів, CUPED; guardrails - RG/доставляємість
Власники/логування/рунібук
Decision table (ескіз)
13) Псевдо-код (скетч)
A. гібридний recall + rank + re-rank
python
Recall cands_emb = ann. recall(user_embed, topk=500)
cands_rule = rule_based. popular_by_segment(user, k=200)
cands = dedup(cands_emb + cands_rule)
Rank features = featurize(user, cands, context) # user/item/context scores = ranker. predict(features) # CTR/Value score
Re-rank (policy-aware)
final = rerank(
cands, scores,
constraints=dict(diversity_min={'category':3},
brand_quota={'A':0. 3,'B':0. 3},
rg_filter=True,
freq_caps=per_user_caps(user)),
objective_weights=dict(ctr=0. 6, value=0. 3, novelty=0. 1)
)
return final[:N]
B. thompson sampling для креативів
python beta priors per creative: (α, β)
for creative in creatives:
p_hat = np. random. beta(alpha[creative], beta[creative])
chosen = argmax(p_hat)
show(chosen)
update(alpha, beta, reward=click)
14) Діагностика та моніторинг
Якість: NDCG/Recall @k, eRPM, coverage/diversity, калібрування.
Онлайн: CTR/CTCVR, дохід/сеанс, утримання, скарги/відписки, latency/timeout.
Дрейф: PSI/KL за ключовими фічами, падіння кореляції oflayn↔onlayn.
Обмеження: виконання квот/diversity, удари в RG-фільтри, частотні капи.
Рунібуки: деградація recall (падіння ANN), зростання скарг, сплеск таймаутів, аварійний фолбек (popular-safe).
15) Часті помилки
Оптимізація «сирого CTR» замість інкременту/цінності.
Немає re-ranking шару → мізерне розмаїття, «тунель зору».
Лики з майбутнього, змішування TZ, неузгоджені визначення сигналів.
Відсутність калібрування і порогів → «псується» бюджет і частотні капи.
Ігнор RG/етики і fairness → скарги, ризики, регуляторні проблеми.
Несинхрон онлайн/офлайн фіч → провал у проді.
16) Чек-лист перед релізом персоналізації
- Паспорт моделі (цілі, обмеження, метрики, власники, версії)
- Recall/Rank/Re-rank рознесені; ANN і кеші прогріті
- PIT-фічі і калібрування, оффлайн бенчмарки (NDCG/PR-AUC) пройдені
- A/B-дизайн і guardrails; звіт decision-ready (ефект і ризики)
- Обмеження: RG/частота/diversity/квоти - впроваджені і моніторяться
- Спостережуваність, алерти, «стоп-кран», фолбеки (popular-safe)
- Документація та рунібуки, план інкрементальних поліпшень
Підсумок
Моделі персоналізації ефективні тільки як policy-aware система: багаті дані та ембеддинги → гібрид Recall/Rank/Re-rank → бандити/RL для онлайн-адаптації → багатоцільові цілі під жорсткі обмеження та етику → дисциплінований MLOps і моніторинг. Такий контур дає не тільки «рекомендації», а керовані рішення, що підвищують ROMI, LTV і задоволеність - безпечно, прозоро і відтворювано.