[cafe] LTV 모델

ML은 참 신기해용
Jun 17, 2023
[cafe] LTV 모델

1. LTV 계산

1.1. LTV = 유지율 * 고객 지불 금액

  • 코호트 단위로 평균 Lifespan과 평균 ARPU를 이용해서 평균 LTV를 구한다.
notion image
  • 고객 생애주기는 유저별 최근 구매일자 - 첫 구매 일자 를 구한 후 중간값을 취해서 계산
  • 해당 카페 데이터셋의 경우, 리텐션이 너무 낮아 → lifespan의 중위값이 0이 나옴
notion image
  • LTV는 13,139원
 

1.2. 확률모형으로 알아보기

비즈니스 상황에 맞게 모델을 결정함
비즈니스 상황에 맞게 모델을 결정함
  • 코호트 단위의 LTV 트렌드는 CRM, 개인화 마케팅 등에 활용하기에 제한적임
  • 고객 개별 단위 LTV를 구하는 핵심은 고객별 기대 ARPU, 고객별 Life Span을 구하는 것. 각 고객 단위로 그 동안의 객단가는 해당 유저가 현재 수준의 ARPU를 유지한다는 가정이 있다는 bias 존재
 

1.2.1. BYTD(Buy Till You Die)모델

  • 확률적 모델링(Probabilistic Modeling) : 분포를 학습하고 분포에서 표본 추출 → 미래의 고객 가치를 예측함
  • RFM 분포 : RFM모델링의 각 요소를 기반으로 고객 행동을 예측하기 위한 분포를 학습함
  • LTV = 미래의 예상 구매 횟수 * 예상 평균 수익
 

1) P/NBD 모델 (파레토/NBD 모델)

  • 고객 이탈에 사용되는 파레토 + 구매 예측에 사용되는 음이항 분포(NBD) 결합
  • 고객의 이탈 여부와 고객이 구매할 빈도를 통해, 고객이 누구인지를 파악하고 RFM 분석을 진행
  • 분포 가정
    • 고객 이탈 확률 → 지수 분포
      사건 간의 시간 간격을 모델링하는데 사용되는 연속 확률 분포. 지수 분포는 사건이 독립적으로 발생하며, 사건 발생률(lambda)에 따라 정의함
      수명 내 구매 빈도 → 푸아송 분포
      일정한 시간 또는 공간 단위에서 발생하는 사건의 개수를 모델링하는데 사용되는 이산 확률 분포
    • 이탈과 재구매 고객 간의 차이는 → 감마 분포
 

2) BG/NBD 모델

  • 반복 거래가 없는 고객은 이탈하지 않는 것으로 가정
  • Time, Recency, Frequency 정보를 바탕으로 BG/NBD 모델로 추정
푸아송 분포 : 단위 시간 동안의 성공 횟수에 대한 분포(’한달 평균 구매 횟수’)
  • 일정한 시간 또는 공간 단위에서 발생하는 사건의 개수를 모델링하는데 사용되는 이산 확률 분포
  • 평균과 분산이 람다. 람다가 커지면, 우측으로 이동하고 좌우로 더 퍼짐
notion image
notion image
감마 분포 : 사건(’구매’)을 n번 시행할 때 까지 총 시간에 대한 분포
 
기하 분포 : 사건(’이탈’)이 1번 발생할 때까지의 시도 횟수에 대한 분포
베타 분포 : 확률(’이탈률’)에 대한 분포(범위 : (0,1))
 

1.3. Lifetimes 모듈 사용

  1. LTV = 고객별 미래의 예상 구매 횟수 * 예상 평균 수익
  1. 미래의 예상 구매 횟수는 BG/NBD 모형을 통해 산출되며, 이를 위해 R (Recency), F (Frequency), T (Time) 정보가 필요
  1. 미래의 예상 평균 수익은 Gamma-Gamma 모형을 통해 산출되며, 이를 위해 F (Frequency), M (Monetary Value) 정보가 필요
 
데이터 전처리
  • datetime형으로 바꾸기
  • 고객ID, 일자, 결제액만 남기기
RFMT 계산
  • summary_data_from_transaction_data
  • F (고객별 구매 일수) R(첫 구매~ 마지막 구매까지 시간) T(첫 구매 ~집계일까지의 시간) M(고객 별 평균 구매 금액)
  • 반복되는 행위에 대한 통계 계산이라, F와 M은 첫 구매 일을 제외함
L2 Penalty 사용
  • 모델의 복잡도를 고려하여 과적합을 방지하고 일반화 성능을 향상시키는 방법
  • 가중치의 제곱을 패널티로 사용
model = BetaGeoFitter(penalizer_coef=l2_reg) model = GammaGammaFitter(penalizer_coef=l2_reg)
데이터셋 분리 (Holdout data)
  • calibration_and_holdout_data
  • cal, holdout 구분하여 계산값을 표시해줌
최종 데이터 만들기 (Calibration/Holdout)
  • F가 0인 데이터 제외 → 반복적인 구매 고객이 아니라 BG/NBD 모형 가정에서 벗어난 고객임
L2 Penalty 최적화
  • score_model : MSE, RMSE, MAE
  • evaluation_bgnbd_model : calibration data와 l2_reg를 넣어 BG/NBD 모형을 적합
  • evaluate_gg_model : calibration data와 l2_reg를 넣어 Gamma-Gamma 모형을 적합
lifetimes_model.summary
  • 일정한 기간 동안 구매하는 횟수 람다 ~ Gamma(r,alpha)
    • 1일 평균 구매 횟수는 0.6회, 최대 1.6일에 한 번 꼴로 구매
      • notion image
  • 구매하지 않을 확률 ~ Beta(a,b)
    • 구매하지 않을 확률 1 근처인 inactive 유저가 많음
notion image
MSE
  • 평균 구매 금액의 평균 제곱 오차는 83,156원
notion image
ltv 높은 순으로 살펴보기
  • 고객 ID 9.58~ 의 ltv는 44만원
  • 평균 구매액 17,110원 / 1년동안 30번 방문 / 최근 방문일자 6일 전(T-recency)
notion image
 
🔑
Lesson Learned - 통계 기반 확률모형을 이해하려면, 일단 너무 부족한 추론 통계 지식 부터 쌓아나가야할 것 같다 - ML은 필수다. 더 빠르고 효율적으로 문제를 해결할 수 있다. 공부의 한계를 구분하지 말 것. (모델을 당장 직접 만들지 못하더라도 컨셉 자체만이라도 이해해보려고 노력하자)
 
 

My Next Step

  • LTV높은 순으로 고객 명단을 뽑고, 이들의 특징 찾아보기
  • WOW 포인트 발견할 수 있으면 가설을 설정하고, 검증해보는 데 까지
 
 

출처 :
 
Share article

hollyisyoon