5分钟上手Lifetimes:电商企业客户留存率分析实战教程

【免费下载链接】lifetimes Lifetime value in Python 【免费下载链接】lifetimes 项目地址: https://gitcode.com/gh_mirrors/li/lifetimes

Lifetimes是一款专注于客户生命周期价值(CLV)分析的Python库,能帮助电商企业精准预测客户留存率、复购行为和客户价值。通过科学的生存分析模型,Lifetimes让企业告别传统经验决策,用数据驱动客户关系管理,提升营销ROI。

🚀 为什么选择Lifetimes进行客户留存分析?

传统客户分析方法往往依赖简单的购买次数统计,而Lifetimes基于BG/NBD模型Gamma-Gamma模型,能深入挖掘客户行为背后的规律:

  • 精准预测:通过客户历史购买数据,预测未来购买概率和频率
  • 价值分层:量化不同客户群体的生命周期价值,识别高价值客户
  • 留存诊断:分析客户"活跃度"和"流失风险",及时干预挽留

正如P. Fader和B. Hardie强调,理解并应用客户生命周期价值是企业销售工作中最重要的部分[README.md]。Lifetimes让复杂的生存分析模型变得简单易用,即使非专业数据分析师也能快速上手。

⚙️ 快速安装与环境准备

1️⃣ 安装Lifetimes库

pip install lifetimes

2️⃣ 获取示例数据集

Lifetimes内置多个电商数据集,如CDNOW客户购买记录,位于datasets/目录下:

  • CDNOW_master.txt:完整交易记录
  • cdnow_customers_summary.csv:客户购买概要数据
  • example_transactions.csv:示例交易数据

3️⃣ 准备数据格式

分析客户留存率需要以下关键指标:

  • frequency:重复购买次数(总购买次数-1)
  • recency:最近一次购买距首次购买的时间间隔
  • T:客户"年龄"(首次购买到观测结束的时间间隔)
  • monetary_value:平均每次购买金额(总消费/购买次数)

🔍 实战:客户留存率分析五步曲

第一步:加载并理解数据

from lifetimes.datasets import load_cdnow_summary
data = load_cdnow_summary(index_col=[0])
print(data.head())

输出结果:

     frequency   recency      T
ID
1    2           30.43       38.86
2    1            1.71       38.86
3    0            0.00       38.86
4    0            0.00       38.86
5    0            0.00       38.86

第二步:构建BG/NBD留存预测模型

BG/NBD模型(Beta-Geometric/Negative Binomial Distribution)是分析客户重复购买行为的经典模型:

from lifetimes import BetaGeoFitter

# 初始化模型
bgf = BetaGeoFitter(penalizer_coef=0.0)
# 拟合数据
bgf.fit(data['frequency'], data['recency'], data['T'])
# 查看模型参数
print(bgf.summary)

模型参数解释:

  • r:购买率的形状参数
  • alpha:购买率的尺度参数
  • a, b:流失率的Beta分布参数

第三步:可视化客户留存矩阵

通过频率-近期矩阵直观展示不同客户群体的留存特征:

from lifetimes.plotting import plot_frequency_recency_matrix
plot_frequency_recency_matrix(bgf)

矩阵解读

  • 右下角(高频+近期购买):最佳客户,留存率最高
  • 右上角(高频+远期购买):流失风险客户
  • 左下角(低频+近期购买):潜在增长客户

另一实用可视化是客户存活概率矩阵:

from lifetimes.plotting import plot_probability_alive_matrix
plot_probability_alive_matrix(bgf)

第四步:客户价值排序与分层

预测客户未来购买概率,识别高价值客户:

t = 1  # 预测未来1个时间单位内的购买次数
data['predicted_purchases'] = bgf.conditional_expected_number_of_purchases_up_to_time(
    t, data['frequency'], data['recency'], data['T']
)
# 按预测购买次数排序
data.sort_values(by='predicted_purchases').tail(5)

典型输出:

       frequency  recency      T        predicted_purchases
ID
509   18          35.14        35.86    0.424877
841   19          34.00        34.14    0.474738
1981  17          28.43        28.86    0.486526
157   29          37.71        38.00    0.662396
1516  26          30.86        31.00    0.710623

第五步:客户生命周期价值(CLV)计算

结合Gamma-Gamma模型估算客户经济价值:

from lifetimes import GammaGammaFitter

# 加载带金额数据的数据集
summary_with_money = load_cdnow_summary_data_with_monetary_value()
# 筛选有重复购买的客户
returning_customers = summary_with_money[summary_with_money['frequency'] > 0]

# 拟合Gamma-Gamma模型
ggf = GammaGammaFitter(penalizer_coef=0)
ggf.fit(returning_customers['frequency'], 
        returning_customers['monetary_value'])

# 计算客户生命周期价值
clv = ggf.customer_lifetime_value(
    bgf,  # 使用之前拟合的BG模型
    summary_with_money['frequency'],
    summary_with_money['recency'],
    summary_with_money['T'],
    summary_with_money['monetary_value'],
    time=12,  # 预测未来12个月
    discount_rate=0.01  # 月贴现率
)

📊 模型评估与优化

验证模型拟合效果

from lifetimes.plotting import plot_period_transactions
plot_period_transactions(bgf)

该图表对比实际交易频率与模型预测结果,若两者趋势一致,表明模型拟合良好。

处理小样本数据

对于小样本数据集,可通过设置正则化系数提高模型稳定性:

bgf = BetaGeoFitter(penalizer_coef=0.01)  # 适当的正则化系数

典型应用中,0.001到0.1之间的正则化系数较为有效[docs/Quickstart.md]。

💡 电商客户留存分析最佳实践

  1. 数据预处理

  2. 模型选择

    • 基础留存分析:BG/NBD模型
    • 价值评估:Gamma-Gamma模型
    • 复杂场景:使用ModifiedBetaGeoFitter
  3. 业务应用

    • 高价值客户:优先资源倾斜,提升留存
    • 高流失风险客户:精准营销干预
    • 低价值高潜力客户:交叉销售/ upsell

📚 进阶学习资源

通过Lifetimes库,电商企业可以在5分钟内搭建专业的客户留存分析系统,从海量交易数据中挖掘客户价值规律,实现数据驱动的精细化运营。立即安装体验,让每一位客户的价值都得到充分释放!

【免费下载链接】lifetimes Lifetime value in Python 【免费下载链接】lifetimes 项目地址: https://gitcode.com/gh_mirrors/li/lifetimes

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐