Когорта анализи
Когорта анализи
Когорт анализи объектилерди (адатта колдонуучуларды) бир баштоо окуясы боюнча топтойт жана алар кантип жана канча убакытка чейин активдүү жана баалуу экенин салыштырат. Мындай ыкма системадагы убакыттын эффектин (сезондор, акциялар) когортанын жашынын эффектинен (башталгандан кийинки күндөр) ажыратат.
1) Негизги аныктамалар
Когорта (cohort): "төрөлүү" окуясы менен бириктирилген көптөгөн оюнчулар - каттоо, биринчи депозит, биринчи оюн, биринчи сатып алуу.
Календардын огу (календардык убакыт): иш жүзүндөгү даталар (2025-10-01,...).
Когорта жашы огу (cohort age): "төрөлгөндөн" тартып күн/жума (D0, D1,...).
Кармап туруу көрсөткүчтөрү: D1/D7/D30 (Exact жана Rolling), WAU/MAU, Stickiness (DAU/MAU).
Monetization: ARPU/ARPPU, топтолгон LTV (D7/D30/D90 боюнча).
Каттоо бирдиги: колдонуучу (user/master_id) - паспортуна жазыңыз.
2) Когорта түрлөрү жана аларды тандоо үчүн качан
Acquisition-когорталар: каттоо/биринчи сапар датасы боюнча - тартуу каналдарын жана онбордингди баалоо.
Activation/Monetization-когорталар: биринчи депозит/сатып алуу боюнча - early-monetization жана промо баалоо.
Feature-cogorts: Чич/оюн категориясын биринчи пайдалануу боюнча - релиздер таасири.
Behavior-cogorts: RFM/үлгү баштоо (мисалы, "түнкү уюлдук").
3) Огу жана торлор: матрицаны кантип көрүү керек
Когорт матрицасы: саптар - когорттор (календарь), колонкалар - курак (D0... D90).
Сезондук: сезондук эффекттерди бөлүү үчүн диагоналдарды (бирдей календардык күн) салыштырыңыз.
Нормалдаштыруу: салыштырма көрсөткүчтөр (CR, үлүштөрү) + топтолгон (LTV), экөөнү тең көрсөтүү.
4) Паспорт когорта жана метрика (template)
5) Psevdo-SQL: матрица retention (Exact Dn)
sql
WITH regs 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 act_day
FROM event_activity
),
ages AS (
SELECT r. user_id, r. cohort_day, a. act_day,
(a. act_day - r. cohort_day) AS age_days
FROM regs r
JOIN act a ON a. user_id = r. user_id
),
exact AS (
SELECT cohort_day,
age_days,
COUNT(DISTINCT user_id) AS users_active
FROM ages
GROUP BY 1,2
),
coh_size AS (
SELECT cohort_day, COUNT(DISTINCT user_id) AS cohort_size
FROM regs GROUP BY 1
)
SELECT e. cohort_day,
e. age_days,
e. users_active::decimal / NULLIF(c. cohort_size,0) AS exact_retention
FROM exact e
JOIN coh_size c USING (cohort_day)
WHERE age_days IN (1,7,30,90)
ORDER BY cohort_day, age_days;
Rolling Dn (1... n күнү иш)
sql
WITH days AS (... as above...),
roll AS (
SELECT cohort_day,
CASE WHEN age_days BETWEEN 1 AND 7 THEN 7
WHEN age_days BETWEEN 1 AND 30 THEN 30 END AS bucket,
COUNT(DISTINCT user_id) AS any_active
FROM days
WHERE age_days BETWEEN 1 AND 30
GROUP BY 1,2
)
SELECT r. cohort_day, r. bucket AS Dn,
r. any_active::decimal / s. cohort_size AS rolling_retention
FROM roll r
JOIN (SELECT cohort_day, COUNT(DISTINCT user_id) cohort_size FROM regs GROUP BY 1) s USING (cohort_day)
ORDER BY cohort_day, Dn;
6) Когорт LTV жана акча табуу
Кумулятивдик LTV (Dn): Dn үчүн когортанын колдонуучусуна түшкөн кирешенин суммасы.
ARPU/ARPPU: пайдалануучуга/Dn боюнча төлөөчүгө киреше.
Төлөгөндөрдүн%: ≥ 1 төлөм менен үлүшү Dn.
sql
WITH reg AS (
SELECT user_id, DATE_TRUNC('day', MIN(ts)) AS cohort_day
FROM event_register GROUP BY 1
),
pay AS (
SELECT user_id, amount, DATE_TRUNC('day', ts) AS pay_day
FROM fact_payments
),
ltv AS (
SELECT r. cohort_day,
(pay_day - r. cohort_day) AS age_days,
SUM(amount) AS rev
FROM reg r JOIN pay p USING (user_id)
WHERE pay_day >= r. cohort_day
GROUP BY 1,2
),
cum AS (
SELECT cohort_day, age_days,
SUM(rev) OVER (PARTITION BY cohort_day ORDER BY age_days ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS rev_cum
FROM ltv
)
SELECT c. cohort_day, c. age_days,
c. rev_cum::decimal / NULLIF(sz. cohort_size,0) AS ltv_per_user
FROM cum c
JOIN (SELECT cohort_day, COUNT(DISTINCT user_id) cohort_size FROM reg GROUP BY 1) sz USING (cohort_day)
WHERE age_days IN (7,30,90)
ORDER BY cohort_day, age_days;
7) Survival/hazard сактоо үчүн
Kaplan-Meier: үлгү эмес жашоо ийри (S (t)) - эмес, "агып" үлүшү.
Hazard-моделдер (Сох/Логит-күн): белгилердин таасири (канал, өлкө, платформа, бонустар, мазмун) агып чыгуу тобокелдигине.
Практика: КМ сегменттери боюнча куруп, андан кийин айырманы hazard модели менен түшүндүрөбүз.
8) сезондук, TZ жана календары
TZ: UTC окуяларды сактоо, жергиликтүү TZ рыногунда талдоо; консистенттүү болуңуз.
Календарь: майрамдар/эмгек акы/матчтар/релиздер - желектер сыяктуу; окшош жумалардын когортторун салыштырып көрүңүз.
Жылма терезе: жумалык/айлык когорталар үчүн - майрамдардын жана отчеттук мезгилдердин эсеби.
9) Сегментация жана атрибуция
Сегменттер: тартуу каналы, платформа/OS, гео, биринчи мазмун, баа/лимиттер, төлөм ыкмасы.
Когортанын атрибуциясы: колдонуучуну "ким алып келди" - алгоритмди бекитүү (last non-direct, data-driven).
LTV-салмагы: CR гана эмес, салыштыруу, ошондой эле LTV (D30/D90) каналдар/сегменттер боюнча.
10) Көрүү
Cougort Matrix жылуулук картасы (CR/LTV).
Тренд сызыктары календар боюнча D1/D7/D30.
Survival/Hazard сүрөттөр.
Bridge "D30 үчүн LTV өзгөрттү": салым төлөө, жыштык, орто чек.
11) Эксперименттер жана себеп
A/B: onbording, туториал, paywall, offers. Негизги метрика - D7/D30 retention жана LTV (D30).
Kvaziexperiments: DiD/синтетикалык контролдоо үчүн базарларда кайра.
Uplift-моделдер: кайра жандандыруу (Qini/AUUC, uplift @k) кайтып максаттуу.
12) Операция жана говернанс
Чыгаруу: 'RET _ D7 _ vN', 'LTV _ D30 _ vN'; активдүүлүктү/валютаны аныктоо өзгөргөндө changelog.
SLO сергектик: күн сайын cogorts - 06:00 лок чейин даяр.; берилиштер мөөнөтү ≤ 1 саат
Сапаты: окуялар coverage, дубликат үлүшү, cogorts тышкары bot/froda үлүшү.
Кирүү: RLS/CLS, PII жашыруу; экспорттоо - агрегаттар гана.
Runbooks: D1 кулап (onbording), D7 (мазмун), окуялардын/инсандыктардын бузулушу.
13) көп каталар (анти-үлгүлөрү)
Ox аралаштыруу: ар кандай мезгилдердеги ар кандай курактагы когортту түзөтүүсүз салыштырышат.
Rolling vs Exact: бир эле нерсе катары чечмеленет.
Бирдиктерди аралаштыруу: бөлүкчөдөгү сессиялар, колдонуучулар бөлүкчөдө.
"Орточо" топтоо: алымдарды/бөлүкчөлөрдү жалпылоонун ордуна.
Ignor TZ/календары: D1 күн/майрам чектеринде жылышы.
Эч кандай чыпкасы боттор/froda/QA.
эске алынбаган кайра: split/merge эсептер эч кандай көпүрө ID.
14) Когорт отчетун жарыялоонун алдындагы чек тизмеси
- Аныкталган туулган, бирдик, TZ, иш терезелер
- Алынып Bot/Frod/QA; Идентификация (golden record)
- CR матрицалары (Exact/Rolling) жана LTV D7/D30/D90
- Календар/майрамдар эске алынган; канал/платформа/гео сегменттери
- survival/hazard-graphics жана bridge LTV кошулду
- Метриканын версиялары жана атрибуция алгоритми документтештирилген
- Жөндөлгөн SLO сергектик, мониторинг coverage/дубликат/каталар
- Runbooks D1/D7 кулашына жана окуялардын үзүлүшүнө даяр
Жыйынтык
Когорт анализи - бул эки огу жана тартип: белгиленген "туулган учур", туура терезелер жана TZ, кармоо матрицалары жана LTV, сегментация жана өзгөрүүлөрдү себептик текшерүү. Бул ыкма гана ийри карап эмес, жардам берет, ошондой эле чечим кабыл алуу: кайда onbording оңдоо, кайсы каналдар масштабдуу, кайсы мазмун жана offers узак оюнчу кармап жана LTV жогорулатуу.