2 분 소요

3. 코호트분석

cohort.py RFM_cohort.py

고객의 첫 구매 월(Cohort)을 기준으로 이후 유지율(Retention)과 매출 추이를 분석했으며, 동일 코호트 내에서도 RFM 세그먼트별 유지 패턴의 차이를 확인할 수 있도록 설계함


cohort_stat (대시보드 사용)

전체 고객을 기준으로 코호트별 유지 지표를 산출

  • Cohort별 최초 고객 수
  • 월차(Cohort Age)별 유지 고객 수
  • 유지율(Retention Rate)
  • 유지 고객 매출액
  • 1인당 유지 매출(Revenue per Active User)
  • 평균 구매 기간
cohort_date cohort_age first_user active_users retention_rate period_revenue revenue_per_user
2019-10-01 0 345250 345250 1.0000 228396975.68 661.54
2019-10-01 1 345250 90823 0.2631 91814671.51 265.94
2019-10-01 2 345250 75950 0.2199 83479261.84 241.79
2019-10-01 3 345250 47207 0.1367 50662256.69 146.74
2019-10-01 4 345250 44014 0.1274 60435245.93 175.05

cohort_rfm_stat (대시보드 사용)

고객을 RFM 세그먼트 단위로 분리하여 코호트 내 유지율의 차이를 확인

rfm_segment cohort_date order_date cohort_age active_number cnt_retention
VIP 2019-10-01 2019-10-01 0 15137 1.0000
VIP 2019-10-01 2019-11-01 1 8148 0.5383
VIP 2019-10-01 2019-12-01 2 6063 0.4005
VIP 2019-10-01 2020-01-01 3 3802 0.2511
VIP 2019-10-01 2020-02-01 4 2934 0.1938

4. 이탈고객 분석

Monthly_Churn.py Monthly_Churn_events.py Monthly_Churn_stats.sql Churn_user_ltv_stat.sql Churn_moving.sql

이탈 고객 분석은 기존 RFM 기반의 세그먼트가 아닌 Recency 중심의 단순하고 직관적인 이탈 분류 기준을 사용 이를 통해 이탈 고객 규모, 행동 패턴, 매출 손실 리스크를 명확히 파악 가능


monthly_churn_stats

Recency를 기반으로 고객을 다음 4개 그룹으로 분류

  • 신규 고객
    기준연월에 처음 구매한 사용자
  • 활성 고객
    최근 60일 이내의 구매자
  • 이탈 위험 고객
    61 ~ 90일동안 미구매자
  • 이탈 고객
    91일 이상 미구매자
snapshot_date segment user_cnt LTV
2019-10-31 신규 고객 345250 228396975.68
2019-11-30 신규 고객 350019 182841551.60
2019-11-30 이탈 위험 고객 4828 0.0
2019-11-30 활성 고객 340422 91814671.51

churn_user_ltv_stat

2020년 4월을 기준으로 이탈 고객의 과거 가치와 앞으로의 손실을 계산

  • 4월 이탈 고객 수
  • 이탈 고객의 과거 총 LTV
  • 활성 고객 수
  • 최근 3개월 이탈률 (2·3·4월)
  • 4월 ARPU
  • 5월 예상 손실액

예상 손실액 = 활성고객수 × 가중 이탈률(3개월) × ARPU

churn_total_cnt churn_ago_total_ltv active_cnt two_month three_month four_month arpu lose_ltv
952076 688292524.94 521289 0.1828 0.0914 0.1041 118.23 7774410.20

churn_funnel (대시보드에 사용)

세그먼트별 조회/장바구니/구매 전환 지표를 산출

segment event_type total_count
신규 고객 view 12615540
신규 고객 purchase 737955
신규 고객 cart 681831
활성 고객 cart 627103
이탈 위험 고객 cart 1637

churn_interval (대시보드에 사용)

각 세그먼트가 최근 3일 / 7일 / 14일 / 전체(all day) 동안 발생시킨 행동 수를 분석

segment event_type interval event_cnt
이탈 위험 고객 view all day 8510436
활성 고객 cart all day 5851518
신규 고객 cart 3 day 7932370

churn_movings (대시보드에 사용)

월별 세그먼트 이동(Transition)을 기반으로 이동인원수를 산출

snapshot_date pre_segment curr_segment cnt
2019-10-31   신규 고객 345250
2019-11-30 신규 고객 활성 고객 340422
2019-12-31 활성 고객 이탈 위험 고객 210289

churn_category (대시보드에 사용)

이탈 고객이 어떤 카테고리를 많이 구매했는지 산출

segment category_id total_count
이탈 고객 2232732093077520756 238596
이탈 고객 2053013555631882655 195000