코호트 분석
코호트 분석
코호트 분석은 단일 시작 이벤트별로 객체 (일반적으로 사용자) 를 그룹화하고 활동적이고 가치있는 기간을 비교합니다. 이 접근법은 시스템의 시간 효과 (계절, 주식) 를 코호트 연령의 영향 (처음부터 며칠) 과 분리합니다.
1) 기본 정의
코호트: 이벤트 "출생" 으로 통합 된 많은 플레이어 - 등록, 첫 예금, 첫 번째 게임, 첫 구매.
달력 시간 축: 실제 날짜 (2025-10-01,...).
코호트 연령 축: 출생 후 일/주 (D0, D1,...).
보존 지표: D1/D7/D30 (Exact and Rolling), WAU/MAU, Stickiness (DAU/MAU).
수익 창출: ARPU/ARPPU, 누적 LTV (D7/D30/D90).
회계 단위: 사용자 (사용자/마스터 _ id) -여권에 기록하십시오.
2) 코호트의 종류와 선택시기
인수 코호트: 등록 날짜/첫 방문 기준-채용 및 온 보딩 채널 평가.
활성화/수익 창출 코호트: 첫 예금/구매-조기 수익 창출 평가 및 프로모션.
기능 코호트: 기능/게임 카테고리를 처음 사용하기 위해-릴리스의 효과.
동작 코호트: RFM/시작 패턴 (예: "야간 모바일").
3) 도끼와 격자: 매트릭스를 보는 방법
코호트 매트릭스: 행-코호트 (달력), 열-나이 (D0... D90).
계절성: 대각선 (동일한 달력 일) 을 비교하여 계절 효과를 분리하십시오.
정규화: 상대 메트릭 (CR, 분수) + 누적 (LTV), 둘 다 표시합니다.
4) 코호트 여권 및 지표 (템플릿)
5) 의사-SQL: 보존 행렬 (정확한 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 지불 자 당 사용자 당 수익.
% 지불: 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) 생존/유지 위험
Kaplan-Meier: 비 모델 생존 곡선 (S (t)) -" 배수 "가 아닌 비율.
위험 모델: 유출 위험에 대한 특성 (채널, 국가, 플랫폼, 보너스, 컨텐츠) 의 영향.
실습: 세그먼트별로 KM을 구축 한 다음 위험 모델과의 차이점을 설명합니다.
8) 계절성, TZ 및 달력
TZ: UTC의 매장 이벤트, 시장의 현지 TZ에서 분석; 일관성을 유지하십시오
일정: 공휴일/급여/일치/릴리스-깃발과 같은; 비슷한 주의 코호트를 비교하십시오.
슬라이딩 창: 주간/월간 코호트-다양한 공휴일 및보고 기간.
9) 세분화 및 귀속
세그먼트: 어트랙션 채널, 플랫폼/OS, 지오, 첫 번째 컨텐츠, 가격/제한, 결제 방법.
코호트 속성: 사용자를 "누가 가져 왔는지" -알고리즘 수정 (마지막 비 직접, 데이터 중심).
LTV 가중치: CR뿐만 아니라 LTV (D30/D90) 도 채널/세그먼트별로 비교하십시오.
10) 시각화
코호트 행렬의 열 맵 (CR/LTV).
달력 별 트렌드 라인 D1/D7/D30.
생존/위험 차트.
Bridge "LTV를 D30으로 변경 한 것": 지불 자 기여, 빈도, 평균 점검.
11) 실험과 인과 관계
A/B: 온 보딩, 튜토리얼, 페이 월, 제공. 주요 지표는 D7/D30 보존 및 LTV (D30) 입니다.
준 실험: 시장에 출시하기위한 DiD/합성 제어.
향상 모델: 재 활성화의 수익 증가를 목표로합니다 (Qini/AUUC, uplift @ k).
12) 운영 및 거버넌스
버전: 'RET _ D7 _ vN', 'LTV _ D30 _ vN'; 활동/통화 정의를 변경할 때 변경 로그.
SLO 신선도: 일일 코호트-06: 00 잠금 장치까지 준비; 데이터 로그는 1 시간 정도입니다.
품질: 이벤트 적용 범위, 중복 비율, 코호트 외부의 봇/사기 비율.
액세스: RLS/CLS, PII 마스킹; 수출-집계 만.
런북: D1 드롭 (온보드), D7 (컨텐츠), 이벤트/신원 폐기.
13) 빈번한 오류 (패턴 방지)
축 혼합: 조정없이 계절에 따라 다른 연령대의 코호트를 비교하십시오.
Rolling vs Exact: 같은 것으로 취급됩니다.
믹싱 단위: 분모의 세션, 분자의 사용자.
"의미" 의 집계: 분자/분모를 합산하는 대신.
TZ/캘린더 무시: 주간/휴일 경계에서 D1 오프셋.
봇/사기/QA 필터가 없습니다.
설명되지 않은 재시작: 신원 교량이없는 분할/병합 계정.
14) 코호트 보고서 발표 전 점검표
- 출생 이벤트, 단위, TZ, 활동 창 정의
- 제외 봇/사기/QA; 신원 혼합 (골든 레코드)
- D7/D30/D90 용 빌드 CR (Exact/Rolling) 및 LTV 행렬
- 일정/공휴일을 고려합니다. 채널/플랫폼/geo 별 세그먼트
- 생존/위험 그래픽 및 브리지 LTV 추가
- 문서화 된 메트릭 버전 및 속성 알고리즘
- 신선한 SLO 구성, 적용 범위/중복/오류 모니터링
- D1/D7 방울 및 이벤트 중단을위한 준비된 런북
합계
코호트 분석은 고정 된 "출생의 모멘트", 올바른 창과 TZ, 보존 및 LTV 매트릭스, 세분화 및 변화의 인과 적 검증이라는 두 가지 축과 훈련입니다. 이 접근 방식은 곡선을 관찰 할뿐만 아니라 결정을 내리는 데 도움이됩니다. 온 보딩을 수정하는 장소, 확장 할 채널, 어떤 콘텐츠 및 제공이 플레이어를 더 오래 유지하고 LTV를 증가시킵니다.