Contents
1. LTV 계산1. LTV 계산1.1. LTV = 유지율 * 고객 지불 금액 1.2. 확률모형으로 알아보기1.2.1. BYTD(Buy Till You Die)모델1) P/NBD 모델 (파레토/NBD 모델)2) BG/NBD 모델1.3. Lifetimes 모듈 사용My Next Step
1. LTV 계산
1.1. LTV = 유지율 * 고객 지불 금액
- 코호트 단위로 평균 Lifespan과 평균 ARPU를 이용해서 평균 LTV를 구한다.
- 고객 생애주기는 유저별
최근 구매일자 - 첫 구매 일자
를 구한 후 중간값을 취해서 계산
- 해당 카페 데이터셋의 경우, 리텐션이 너무 낮아 → lifespan의 중위값이 0이 나옴
- 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 모델로 추정
푸아송 분포 : 단위 시간 동안의 성공 횟수에 대한 분포(’한달 평균 구매 횟수’)
- 일정한 시간 또는 공간 단위에서 발생하는 사건의 개수를 모델링하는데 사용되는 이산 확률 분포
- 평균과 분산이 람다. 람다가 커지면, 우측으로 이동하고 좌우로 더 퍼짐
감마 분포 : 사건(’구매’)을 n번 시행할 때 까지 총 시간에 대한 분포
기하 분포 : 사건(’이탈’)이 1번 발생할 때까지의 시도 횟수에 대한 분포
베타 분포 : 확률(’이탈률’)에 대한 분포(범위 : (0,1))
1.3. Lifetimes 모듈 사용
- LTV = 고객별 미래의 예상 구매 횟수 * 예상 평균 수익
- 미래의 예상 구매 횟수는 BG/NBD 모형을 통해 산출되며, 이를 위해 R (Recency), F (Frequency), T (Time) 정보가 필요
- 미래의 예상 평균 수익은 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일에 한 번 꼴로 구매
- 구매하지 않을 확률 ~ Beta(a,b)
- 구매하지 않을 확률 1 근처인 inactive 유저가 많음
MSE
- 평균 구매 금액의 평균 제곱 오차는 83,156원
ltv 높은 순으로 살펴보기
- 고객 ID 9.58~ 의 ltv는 44만원
- 평균 구매액 17,110원 / 1년동안 30번 방문 / 최근 방문일자 6일 전(T-recency)
Lesson Learned
- 통계 기반 확률모형을 이해하려면, 일단 너무 부족한 추론 통계 지식 부터 쌓아나가야할 것 같다
- ML은 필수다. 더 빠르고 효율적으로 문제를 해결할 수 있다. 공부의 한계를 구분하지 말 것. (모델을 당장 직접 만들지 못하더라도 컨셉 자체만이라도 이해해보려고 노력하자)
My Next Step
- LTV높은 순으로 고객 명단을 뽑고, 이들의 특징 찾아보기
- WOW 포인트 발견할 수 있으면 가설을 설정하고, 검증해보는 데 까지
출처 :
- 데이터 마케팅 공부방 <LTV 구하기>
Share article