CLTV(Customer Lifetime Value, 고객 생애 가치) 예측은 기업이 고객 관계를 효과적으로 관리하고, 수익 극대화를 위한 전략을 수립하는 데 필수적인 요소입니다. 이를 위해 BG/NBD(Beta-Geometric/Negative Binomial Distribution) 모델과 Gamma-Gamma 모델이 널리 사용됩니다.
이 모델들은 다음과 같은 문제를 해결하는 데 도움을 줍니다:
BG/NBD 모델은 고객의 과거 구매 데이터를 기반으로 미래 재구매 가능성을 예측하는 데 사용됩니다.
from lifetimes import BetaGeoFitter
# 모델 생성 및 학습
bgf = BetaGeoFitter(penalizer_coef=0.0)
bgf.fit(data['frequency'], data['recency'], data['T'])
# 모델 정보 출력
print(bgf)
이 코드에서는 frequency(총 구매 횟수), recency(가장 최근 구매 시점), T(총 관찰 기간)를 이용하여 모델을 학습합니다.
BG/NBD 모델은 재구매 가능성을 예측하지만, 구매 금액 자체는 예측하지 못합니다. 이를 보완하기 위해 Gamma-Gamma 모델을 함께 사용합니다.
from lifetimes import GammaGammaFitter
# Pearson 상관계수 확인
data[['monetary_value', 'frequency']].corr()
# Gamma-Gamma 모델 학습
ggf = GammaGammaFitter(penalizer_coef=0)
ggf.fit(data['frequency'], data['monetary_value'])
# 모델 정보 출력
print(ggf)
이 코드에서는 고객의 frequency(구매 빈도)와 monetary_value(구매 금액)를 학습하여 평균 구매 금액을 예측합니다.
lifetimes 패키지는 머신 러닝을 활용한 CLTV 예측을 위한 다양한 확률 모델을 제공합니다. 이 패키지는 다음과 같은 핵심 모델을 포함하고 있습니다:
# 30일 동안의 예상 구매 횟수 예측
bgf.predict(30, data['frequency'], data['recency'], data['T'])
위 코드를 실행하면, 특정 고객이 30일 동안 몇 번 구매할지를 예측할 수 있습니다.
이제 두 모델을 결합하여 CLTV를 예측할 수 있습니다.
# 고객별 예상 평균 구매 금액 예측
expected_monetary_value = ggf.conditional_expected_average_profit(
data['frequency'], data['monetary_value']
)
# 고객별 예상 구매 횟수 예측
expected_purchases = bgf.predict(30, data['frequency'], data['recency'], data['T'])
# CLTV 계산
cltv = expected_monetary_value * expected_purchases
이렇게 하면 고객별로 미래 일정 기간(예: 30일) 동안 발생할 총 매출을 예측할 수 있습니다.
BG/NBD 및 Gamma-Gamma 모델을 활용하면 CLTV를 보다 정밀하게 예측하고, 고객 중심의 전략을 구축할 수 있습니다. 기업이 장기적인 성장과 수익성을 확보하는 데 있어 필수적인 분석 방법이라고 할 수 있습니다.