
lifetimes는 파이썬 오픈소스 라이브러리로, 고객 생애 가치(CLTV)와 고객 로열티 관련 데이터를 분석하고 모델링할 때 사용된다. 이 패키지를 통해 CRM 관련 기법과 지표를 쉽게 구할 수 있다.

BG/NBD(Beta Geometric Negative Binomial Distribution) 모델은 고객의 기대 구매 횟수를 예측하는 확률 모델로, 고객 이탈과 재구매 패턴을 모델링하는 데 사용된다. 이 모델은 CLTV나 이탈률(Bounce Rate)을 예측하는 데 유용하며, 고객이 특정 제품이나 브랜드와 얼마나 자주 구매하고 오랫동안 관계를 유지할지를 예측하는 데 도움을 준다.


Gamma-Gamma 모델은 고객의 기대 구매 금액을 예측하는 모델로, 미래 고객이 얼마나 많은 금액을 구매할지 예측하는 데 도움을 준다. BG/NBD 모델과 함께 사용하면, 고객의 구매 빈도와 금액을 모두 예측할 수 있어 더욱 정밀한 CLTV 계산이 가능하다.

!pip install lifetimes
from lifetimes import BetaGeoFitter
from lifetimes import GammaGammaFitter
# 미래 예상 구매 횟수 예측: BG/NBD
bgf = BetaGeoFitter(penalizer_coef=0.001)
bgf.fit(df_cltv['Frequency'], df_cltv['Recency'], df_cltv['T'])
# T 시점까지 몇 개를 구매할까? - week
# conditional_expected_number_of_purchases_up_to_time: t 시점까지의 예상 구매 일수 계산
bgf.conditional_expected_number_of_purchases_up_to_time(1, # week
flo_cltv2['Frequency'],
flo_cltv2['Recency'],
flo_cltv2['T']).sort_values(ascending=False).head(10)
# 결과값:
# 6812 0.102145
# 19705 0.095650
# 1215 0.095152
# 12605 0.094876
# 16921 0.092634
# 11430 0.092491
# 6929 0.091434
# 644 0.090680
# 2217 0.090374
# 3564 0.088965
# dtype: float64
# T 시점까지 몇 개를 구할까? - month
bgf.conditional_expected_number_of_purchases_up_to_time(4, # 4 weeks = 1 month
df_cltv['Frequency'],
df_cltv['Recency'],
df_cltv['T']).sort_values(ascending=False).head(10)
# Gamma-Gamma 모델
ggf = GammaGammaFitter(penalizer_coef=0.01)
ggf.fit(df_cltv['Frequency'], df_cltv['Monetary'])
# conditional_expected_average_profit: 예상 평균 구매 금액 계산
ggf.conditional_expected_average_profit(
df_cltv['Frequency'],
df_cltv['Monetary']).sort_values(ascending=False).head(10)
# 향후 3개월의 고객 생애 가치 예측
df_cltv['cltv_pred_3_months'] = ggf.customer_lifetime_value(bgf,
df_cltv['Frequency'],
df_cltv['Recency'],
df_cltv['T'],
df_cltv['Monetary'],
time=3, # month
freq='W', # week
discount_rate=0.01)
df_cltv.head()