python包的生存期使用的是BG / NBD方法,与R包的BTYD相同。
在R论文中,我们可以在给定的时间范围内估算任何新收购客户的客户寿命(CLV)包。但是,我无法在python中找到等效的功能。
似乎所有我能找到的信息都是在给定过去频率和新近度作为条件概率的情况下估计CLV。有没有人对此有任何经验?
答案 0 :(得分:0)
是的。来自documentation Estimating customer lifetime value using the Gamma-Gamma model。
确保您拥有frequency, monetary_value
格式的数据,例如:
from lifetimes.datasets import load_cdnow_summary_data_with_monetary_value
data = load_cdnow_summary_data_with_monetary_value()
data.head()
frequency recency T monetary_value
customer_id
1 2 30.43 38.86 22.35
2 1 1.71 38.86 11.77
6 7 29.43 38.86 73.74
7 1 5.00 38.86 11.77
9 2 35.71 38.86 25.55
然后适合BG模型:
from lifetimes import BetaGeoFitter
# similar API to scikit-learn and lifelines.
bgf = BetaGeoFitter(penalizer_coef=0.0)
bgf.fit(data['frequency'], data['recency'], data['T'])
# Filter out customers who did not return
returning_customers_summary = data[data['frequency']>0]
from lifetimes import GammaGammaFitter
ggf = GammaGammaFitter(penalizer_coef = 0)
ggf.fit(returning_customers_summary['frequency'],
returning_customers_summary['monetary_value'])
在这里,您要使用之前安装的BetaGeoFilter调用已安装的gamma-gamma函数,并使用{频率,新近度,T及其支出/事件(monetary_value
)}(几天)中的客户数据数组以及月的时间表和每月的折扣率。
print(ggf.customer_lifetime_value(
bgf, #the model to use to predict the number of future transactions
summary_with_money_value['frequency'],
summary_with_money_value['recency'],
summary_with_money_value['T'],
summary_with_money_value['monetary_value'],
time=12, # months
discount_rate=0.01 # monthly discount rate ~ 12.7% annually
).head(10))
"""
customer_id
1 140.096211
2 18.943467
3 38.180574
4 38.180574
5 38.180574
6 1003.868107
7 28.109683
8 38.180574
9 167.418216
10 38.180574
Name: clv, dtype: float64
"""