Прогноз оттока игроков
Прогноз оттока игроков
Цель прогноза оттока — заранее выявить игроков с риском не вернуться и запустить управляемые действия (ре-активация, ограничители RG, персональные офферы), максимизируя ценность и минимизируя вред. Ниже — end-to-end каркас от данных до эксплуатации.
1) Определения и рамки
Единица учета: пользователь (user/master_id) — по умолчанию.
Правило оттока (churn rule): отсутствие целевой активности ≥ T дней (например, 14/30). Активность фиксируйте: ≥1 сессия / ставка / депозит.
Горизонт прогноза: H дней (риск оттока в следующие 7/14/30 дней).
Cutoff дата: день формирования фич; метки не должны использовать информацию позже cutoff.
2) Разметка меток без утечек (Point-in-Time)
Target (классификация): `churn_next_H=1`, если игрок не активен ни разу в окно (t, t+H] и далее выполняет правило T.
Time-to-event (выживаемость): время до оттока или цензуры; хорошо для планирования капов/очередей.
Скользящие срезы: генерируйте обучающие примеры на разных датах с лагами, чтобы не утекало будущее.
Окна истины: ждите подтверждение оттока T до фиксации метки (delayed truth).
3) Фичи и окна
Recency/Frequency/Monetary: дни с последней активностью/депозитом, интенсивности за окна 7/14/30/90, ARPPU/частота.
Поведение и контент: категории игр, разнообразие, «серийность» (run-length), время суток/недели.
Маркетинг: открытие пушей/писем, реакции на офферы, отписки.
Риски/RG/фрод: флаги и счетчики, аккуратно — как guardrails.
Календарь: праздники/матчи/зарплатные дни, сезонные фичи (dow, dom, wom).
Идентичности/устройства: платформа/OS/изменения девайса, стабильность IP/ASN.
Онлайн/офлайн паритет: фичестор с одинаковыми рецептами и временем среза.
4) Моделирование
4.1 Классификация (риск оттока в окно H)
Логистическая регрессия (интерпретируемо), GBM/Random Forest (сильные бейзлайны), Tab/Seq-NN.
Пороги по стоимости ошибок, не по «красивому ROC».
4.2 Выживаемость / Hazard (время до оттока)
Kaplan–Meier (форма кривой), Cox PH / AFT, discrete-time hazard (логит по дням с календарем).
Дают вероятность оттока по времени, позволяют планировать частоту контактов и капы.
4.3 Последовательные и гибриды
RNN/TFT/Transformer с временными признаками и масками пропусков.
Гибрид: бинарный риск и время до события → лучшее принятие решений.
4.4 Uplift-модели
Прогнозируют прирост удержания от контакта; применяйте, если есть лог действий/экспериментов.
5) Оценка и калибровка
Дисбаланс классов: основные — PR-AUC, Recall@FPR≤x%, Precision@k.
Калибровка вероятностей: Brier, reliability plots; Platt/Isotonic.
Время: backtesting с разнесенными по календарю фолдами (rolling origin).
Стабильность: разброс метрик по сегментам (страна/канал/платформа).
Выживаемость: интегральная ошибка по кривой риска, калибровка S(t).
6) Пороги, гистерезис и политика решений
Разделите зоны:- `score ≥ τ_block` → сильная интервенция (персональный оффер/звонок)
- `τ_review ≤ score < τ_block` → мягкий контакт (пуш/e-mail)
- `score < τ_review` → без действия
Гистерезис: входной порог выше выходного, чтобы не «мигать».
Кулдауны: минимальные интервалы повторных касаний per user/channel.
Guardrails: ROMI≥0, жалобы≤X, RG-ограничения, частота контактов.
Пример decision table
7) Экономика решения
Ожидаемая ценность:[
EV = p_{\text{удержания действие}} \cdot LTV_{\text{future}}
p_{\text{вред}} \cdot Harm - Cost
]
Оптимизируйте пороги и аллокацию каналов по EV, а не по голому CR.
8) Эксперименты и причинность
A/B: стратегии контактов/офферов; основная метрика — retention uplift (D7/D30), guardrails — жалобы/RG.
Квазиэксперименты: DiD/синтетический контроль при региональных выкативах.
Uplift-оценка: Qini/AUUC, uplift@k.
9) Деплой и онлайн-контур
Скоринг: p95 ≤ 100–300 мс; идемпотентность запросов, `correlation_id`.
Оркестратор: гарантированная доставка, retry/backoff, DLQ, rate-limit per channel/user.
Журнал решений: `signal→score→decision→action→outcome` с версиями модели/политики.
Feature parity: одинаковые фичи онлайн/офлайн; временные срезы — строго до cutoff.
10) Мониторинг и дрейф
Качество: PR-AUC/Recall@FPR по скользящему окну, калибровка; доля в зонах `block/review`.
Дрейф: PSI/KL по ключевым фичам, shift целевой доли, «новые» паттерны.
Операции: latency, таймауты, % фолбэков, очередь контактов, жалобы.
Fairness: дифференция ошибок/порогов по сегментам; аудит объяснимости.
11) Псевдо-SQL/рецепты
A. Формирование метки churn_next_14 (классификация)
sql
WITH activity AS (
SELECT user_id, DATE_TRUNC('day', ts) AS d
FROM event_activity
),
snap AS (-- cut-off date
SELECT DISTINCT DATE_TRUNC('day', ts) AS cut
FROM event_activity
WHERE ts BETWEEN:train_from AND:train_to
),
label AS (
SELECT s. cut, a. user_id,
CASE WHEN NOT EXISTS (
SELECT 1 FROM activity a2
WHERE a2. user_id = a. user_id
AND a2. d > s. cut AND a2. d <= s. cut + INTERVAL '14 day'
) THEN 1 ELSE 0 END AS churn_next_14
FROM snap s
JOIN (SELECT DISTINCT user_id FROM activity) a ON 1=1
)
SELECT FROM label;
B. Rolling-фичи (7/30/90) с point-in-time
sql
SELECT u. user_id, s. cut AS cut_day,
SUM(CASE WHEN a. d > s. cut - INTERVAL '7 day' AND a. d <= s. cut THEN 1 END) AS act_7d,
SUM(CASE WHEN a. d > s. cut - INTERVAL '30 day' AND a. d <= s. cut THEN 1 END) AS act_30d,
SUM(CASE WHEN p. d > s. cut - INTERVAL '30 day' AND p. d <= s. cut THEN p. amount ELSE 0 END) AS rev_30d,
DATE_PART('day', s. cut - MAX(a. d)) AS recency_last_act
FROM snap s
JOIN users u ON 1=1
LEFT JOIN activity a ON a. user_id = u. user_id AND a. d <= s. cut
LEFT JOIN payments p ON p. user_id = u. user_id AND p. d <= s. cut
GROUP BY 1,2;
12) Шаблоны артефактов
Паспорт модели оттока (template)
ID/версия: `CHURN_14D_GBM_v4`
Target/окно: `churn_next_14`, PIT-срезы по дням
Фичи: RFM, контент, маркетинг, календарь, устройство
Метрики: PR-AUC≥0.45, Recall@FPR≤1% ≥ 0.30, Brier≤X
Калибровка: isotonic
Пороги: `τ_block/τ_review` с гистерезисом
SLO: скоринг ≤ 150 мс p95; генерация оффлайн отчета ≤ 06:00
Владельцы, дата ревизии, runbook деградации
Decision-ready отчет (скелет)
«Churn 14d: риск по сегментам, топ-причины, forecast конверсии ре-активации»
Риски: доля high-risk выросла в платформах X/Y (+Δ п.п.)
Рекомендации: увеличить бюджет контактов в сегменте A, сменить канал B, RG-ограничители в сегменте C
13) Безопасность, приватность, этика
PII-минимизация: токенизация идентификаторов, RLS/CLS.
Прозрачность: причины решения/контакта (top-features/правила) доступны саппорту.
Этика/RG: не таргетируйте уязвимые группы агрессивными офферами; cap частоты контактов.
14) Частые ошибки
Метка использует будущее (label leakage), смешение TZ/окон.
Оценка по ROC-AUC при 1% таргете без PR-AUC / Recall@FPR.
Нет калибровки — пороги настроены «вслепую».
Отсутствие гистерезиса/кулдаунов → «мигание» контактов и жалобы.
Не связали риск с EV/LTV — «лечим» тех, кого невыгодно лечить.
Онлайн/офлайн рассинхрон фич — в проде качество падает.
15) Чек-лист перед релизом контура
- Определены T/H/TZ, активность, исключения; PIT-процедуры оформлены
- Датасеты без утечек; rolling-валидация, бенчмарки и калибровка
- Пороговая политика, гистерезис, капы и guardrails документированы
- Оркестратор действий, идемпотентность, аудит «signal→decision→action»
- Мониторинг качества/дрейфа/fairness, алерты и runbooks
- Uplift-оценка и/или A/B готова; отчет decision-ready (с EV)
- Версии модели/фич/метрик, владельцы, SLO прописаны
Итог
Прогноз оттока работает только как система: четкая разметка без утечек → информативные фичи → подходящая модель (классификация и/или выживаемость) → метрики, калибровка и пороги от стоимости ошибок → безопасная оркестрация действий → мониторинг дрейфа и fairness. Такой контур дает решения, а не только «риски»: кого, когда и как контактировать, чтобы повышать удержание и LTV.