Ойыншыларды ұстап қалуды талдау
Ойыншыларды ұстап қалуды талдау
Ұстап тұру - өнім экономикасының өзегі: ойыншы неғұрлым белсенді болса, LTV соғұрлым жоғары болса, табыс пен болжамды жоспарлау соғұрлым тұрақты болады. Төменде - толық қаңқа: дұрыс анықтамадан бастап өмір сүру модельдеріне және қайта белсендіру контурына дейін.
1) Анықтамалар және есепке алу бірліктері
Бірлік: ойыншы (user/master_id) - әдепкі; қысқа мерзімді тапсырмалар үшін «аккаунт/құрылғы» дейік, бірақ оны метрика паспортына жазыңыз.
Белсенділік: қайтару критерийі (≥ 1 сессия/ ≥ 1 ставка/ ≥ 1 депозит) - белгілеңіз.
Ретеншн Dn: референттік күннен кейін n-ші күні қайтарылған когортаның үлесі.
Rolling/Bracket: Rolling D7 (кез келген күні 1-7) vs Exact D7 (дәл 7-ші күні).
Churn (кету): белсенділіктің болмауы ≥ T күн (мысалы, 14/30); өнім ережесі ретінде қойылады.
Когорталар: тіркелген/бірінші депозит/бірінші ойын күні бойынша - маркетинг/өнім міндетіне таңдаңыз.
2) Базалық талдау: когорттар және retention-қисықтар
Когорт жылу карталары: D1/D3/D7/D14/D30/D60; диагональдар релиздер мен науқандар арасында салыстырмалы.
Өмір сүру қисықтары: 0 күннен N күнге дейінгі белсенділер үлесі (survival curve).
Қисық геометриясы: мерекелердің/релиздердің «баспалдақтары»; ерте «құлау» → онбординг мәселелері, «ұзын құйрық» → адал ядро.
Псевдо-SQL: когорт D7
sql
WITH regs AS (
SELECT user_id, DATE_TRUNC('day', ts) AS cohort_day
FROM event_register
),
act AS (
SELECT user_id, DATE_TRUNC('day', ts) AS act_day
FROM event_activity
),
d7 AS (
SELECT r. cohort_day,
COUNT(DISTINCT r. user_id) AS cohort_size,
COUNT(DISTINCT CASE WHEN a. act_day = r. cohort_day + INTERVAL '7 day'
THEN r. user_id END) AS retained_d7
FROM regs r
LEFT JOIN act a ON a. user_id = r. user_id
GROUP BY 1
)
SELECT cohort_day, cohort_size,
retained_d7::decimal / NULLIF(cohort_size,0) AS cr_d7
FROM d7
ORDER BY cohort_day;
3) Тіршілік ету және hazard-модельдер
Kaplan-Meier: survival (S (t)) үлгілік емес бағасы; қисық және өмір медианы «пішінін алу» үшін пайдалы.
Cox PH/Accelerated Failure Time: белгілердің (ел, арна, платформа, бонустар, контент) hazard-ға әсер етуінің түсіндірілетін модельдері (кету тәуекелі).
Discrete-time hazard (күн бойынша логит): азық-түлік талдауы және күнтізбе фичтері үшін икемді.
«Қайта белсендіру» оқиғасы: жеке (competing risks) немесе Марков тізбегіне өту ретінде модельдеу.
4) Марково және жартылай маркалық модельдер
Күйі: New → Active → Dormant → Churned → Reactivated.
Ауысулар: кезеңдегі ықтималдықтар (күн/апта).
Құндылығы: «Active» -де болу ықтималдығын орташа чек/жиілікке мультиплицирлеңіз - күтілетін LTV үлесін алыңыз.
5) Ұстап қалу байланысы және LTV
LTV ( дисконт).
Икемділік: D7 өсімі X п.т. → LTV өсімі Y% (тарихи деректерден/үлгілерден).
Басымдық: ерте ұстап қалуға әсер ететін жақсартулар (D1-D7), әрдайым дерлік ең табысты.
6) Ұстап қалу сегментациясы
Онбординг-когорттар: күніне бірінші контент/ойын санаты/мінез-құлық үлгісі 0.
Гео/платформа/арна: UX және күту айырмашылықтары; күнтізбеге/мерекелерге түзетулер енгізіңіз.
Мінез-құлық/құндылық: RFM (Recency-Frequency-Monetary), ағып кету тәуекелі, пайдалылық.
Стимулға жауап: оффераларға/нотификацияларға uplift-реакция бойынша сегменттер.
7) Себептілік және эксперименттер
А/В: онбординг, туториалдар, пуш-стратегиялар; негізгі метрика - D7/D14/D30 ретеншн, guardrails - шағымдар, жауап беру уақыты, RG.
Квазиэксперименттер: randomization мүмкін емес кезде DiD/синтетикалық бақылау (мысалы, аймақтық шығулар).
Uplift модельдері: белсенділік ықтималдығын емес, қайтарым өсімін таргеттейді; Qini/AUUC бағалаңыз.
8) Қайта белсендіру: триггерлер және саясат
Сигналдар: жиіліктің төмендеуі, N күн депозиттерінің болмауы, аномальды төмен чек, 2-сессиясыз аяқталған онбординг.
Decision table (мысал)
Гистерезис: «жыпылықтамау» үшін сигналдар үшін кіру/шығу әр түрлі табалдырықтар.
Арналар: in-app, пуш, e-mail, SMS, колл-орталық - rate-limit және басымдықтары бар.
9) Ұстап қалу өлшемдері
D1/D7/D30 (Rolling/Exact), WAU/MAU, Stickiness (DAU/MAU).
Survival медиана/квантили; интервалдарда hazard.
Reactivation rate (R30), Dormancy share.
ROMI қайта белсендіру, NNT (1 қайтаруға қанша байланыс).
Fairness: елдер/платформалар бойынша метрикалардың айырмашылығы; саясаттан жарамсыз белгілерді алып тастаңыз.
10) Ұстап қалу дашбордтары
Когорталық жылу картасы + тренд сызықтары D1/D7/D30.
Сурвивал/hazard сегменттер бойынша графиктер.
Ерте өмірдің воронкасы: install → reg → KYC → 1-ші ойын → 1-ші депозит.
Әрекет картасы: сигнал → шешім → арна → шығыс (conversion to return).
Guardrails: деректердің жаңаруы, оқиғалар coverage, шағымдар, RG индикаторлары.
11) Деректер және сапа
Оқиғалар: каноникалық схема (UTC, нұсқалар), іспеттілік, дедуп.
Сәйкестігі: user/device/e-mail/телефон - көпірлер және алтын жазба.
Терезелер және TZ: UTC + жергілікті көріністерде сақтау; мерекелердің бірыңғай күнтізбесі.
Сүзгілер: боттар/QA/фрод - когорта мен белсенділіктен шығарыңыз.
Метриканы нұсқалау: 'RET _ D7 _ vN' c changelog.
12) Псевдо-SQL/питон-рецепттер
Rolling D30
sql
WITH base AS (
SELECT user_id, DATE_TRUNC('day', MIN(ts)) AS cohort_day
FROM event_register GROUP BY 1
),
act AS (
SELECT user_id, DATE_TRUNC('day', ts) AS d
FROM event_activity
),
roll30 AS (
SELECT b. cohort_day,
COUNT(DISTINCT b. user_id) AS cohort_size,
COUNT(DISTINCT CASE WHEN a. d BETWEEN b. cohort_day AND b. cohort_day + INTERVAL '30 day'
THEN b. user_id END) AS any_1_30
FROM base b LEFT JOIN act a ON a. user_id = b. user_id
GROUP BY 1
)
SELECT cohort_day, any_1_30::decimal/cohort_size AS rolling_d30
FROM roll30;
Kaplan-Meier (эскиз)
python t_i - time to outflow or censorship; e_i - event indicator
S(t) = Π_{t_i ≤ t} (1 - d_i / n_i)
Discrete-hazard (күн бойынша логит)
python
For each user, create records before the event/censorship by day:
target = 1 if there was an outflow on that day; characteristics: calendar, activity, promo, etc.
Training logistic regression/GBM; forecast p_t - probability of outflow on day t.
13) Uplift-ұстау таргетингі
Аймақтар: Persuadables (байланыс жасасақ қайтып келеді), Sure things (қайтып келеді), Lost causes, Do-not-disturb (байланыс зиян келтіреді).
Өлшемдері: uplift @k, Qini/AUUC; саясат - бюджет үшін uplift бойынша топ-k байланысамыз.
Guardrails: контакт жиілігіне cap, RG/этика, байланыс себебін түсіндіру.
14) Операциялық пайдалану
SLO: ретеншн-дашбордты жаңарту ≤ 06:00 лок.; тәуекел скорингінің latency ≤ 300 мс; Decision→Action ≤ 5 с.
Мониторинг: қисықтардың сегменттер бойынша жылжуы, белгілер дрейфінің PSI, «оқиғалардың үзілуі».
Рунибуки: D1 құлдырауы (онбординг/релиз), D7 құлдырауы (контент/жиілік), коммуникация арналарының жергілікті ақаулары.
15) Жиі қателер
Бірліктерді араластыру (пайдаланушылар сессиялары), TZ, белсенділік терезелері.
Rolling және Exact көрсеткіштерін тең ретінде салыстыру.
Игнор бота/фрода → жоғары D1/D7.
Себептік тексерусіз корреляция бойынша қорытындылар.
Гистерезистің/кулдауналардың болмауы → байланыстардан шаршау.
LTV байланысы жоқ - CR оңтайландырамыз, бірақ құндылық емес.
16) Ұстап қалу контурын шығару алдындағы чек-парақ
- Метриканың паспорты (белсенділік триггері, терезе, TZ, нұсқа)
- Сегменттер бойынша когорт есептері және survival/hazard
- Ағып кету және uplift тәуекел модельдері, қақпақтар және guardrails арналар
- А/В жоспары және/немесе интервенцияларға арналған квазиэксперименттер
- Дашбордтар/coverage/шағымдар/RG
- Оқиғалар Рунибуки, гистерезис және саясаттағы rate-limits
- LTV және ROMI-мен ұстап қалу байланысы; күтілетін құндылық бойынша басымдық беру
Жиынтығы
Ұстап қалу талдауы тек «когорт жылу картасы» ғана емес, басқарылатын жүйе: дұрыс анықтамалар, survival/hazard-модельдер, құндылықпен байланыс, таргеттелген және этикалық интервенциялар, әсерді қатаң бағалау және операциялық guardrails. Сіз LTV-ді тұрақты түрде арттырып, ағымды азайтатын «бақылау → түсіну → шешім → әрекет ету → үйрену» циклін жасайсыз.