如何使用Python中的生命周期包获得客户生命周期的期望值

时间:2018-06-19 17:42:55

标签: python lifetime lifetimes-python

python包的生存期使用的是BG / NBD方法,与R包的BTYD相同。

在R论文中,我们可以在给定的时间范围内估算任何新收购客户的客户寿命(CLV)包。但是,我无法在python中找到等效的功能。

似乎所有我能找到的信息都是在给定过去频率和新近度作为条件概率的情况下估计CLV。有没有人对此有任何经验?

1 个答案:

答案 0 :(得分:0)

是的。来自documentation Estimating customer lifetime value using the Gamma-Gamma model

步骤1:拟合BG模型

确保您拥有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'])

步骤2:拟合Gamma-gamma模型

# 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'])

第3步:估算生命周期价值

在这里,您要使用之前安装的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
"""