客户价值分析:CLTV与RFM方法

在当今竞争激烈的商业环境中,了解客户的价值对于企业的成功至关重要。两种常用的分析方法是客户终身价值(CLTV)和RFM分析。CLTV预测客户在与企业关系存续期间可能带来的总收益,而RFM分析则用于细分市场策略。本文将详细介绍如何使用Python中的Pandas和Lifetimes模块进行这两种分析,并探讨如何将分析结果应用于营销策略的优化。

数据集介绍

本次分析将使用“在线零售2”数据集,该数据集包含了2009年12月1日至2011年12月9日期间,一家注册于英国的在线零售商的所有交易记录。该零售商主要销售各类礼品,其客户主要是批发商。数据集包含以下属性:

- InvoiceNo: 发票号码,名义变量。 - StockCode: 产品代码,名义变量。 - Description: 产品名称,名义变量。 - Quantity: 每笔交易中每种产品的数量,数值型。 - InvoiceDate: 发票日期和时间,数值型。 - UnitPrice: 单价,数值型,以英镑表示。 - CustomerID: 客户编号,名义变量。 - Country: 客户所在国家名称,名义变量。

将重点关注2010年至2011年间来自英国客户的购买行为。通过探索性数据分析,发现:

- 数据集包含485123个观测单位,8个属性。 - 有130802个CustomerID的空值。 - 有3844种独特的产品。 - 有9288次退货。 - Quantity和Price列中存在许多异常值和负值。 - 数据集中最常见的产品是“白色挂心形小灯座”。 - 产生最多收入的商品是“纸艺小鸟”。

更多数据详情可通过以下链接查看:

数据准备

在进行分析之前,需要对数据进行清洗和准备。首先,删除CustomerID的空值。对于异常值,不打算删除所有异常值,而是将其替换为±1.5*IQR。然后,创建TotalPrice列,用于计算Monetary值。根据Lifetimes模块的文档,需要将数据整理成包含4列的特定格式,并使用CustomerID作为索引。

- Frequency: 客户重复购买的次数。 - T: 客户的首次购买日期和研究期间的结束日期。将使用周作为分析的时间单位。 - Recency: 客户首次购买和最近一次购买之间的时间间隔。 - Monetary: 客户购买的平均价值。

数据集中最后一个InvoiceDate是2011年12月9日。需要选择一个合适的分析日期,因为自最后一次记录以来已经过去了10年,然后开始准备列。将按周计算客户生命周期(tenure),因此将Recency和T列除以7。

清洗和准备后的数据如下所示:

理论与建模

在深入建模之前,先讨论一下模型背后的理论。如前所述,CLTV是客户在与公司关系存续期间将为公司带来的货币价值。最基本的定义是:

CLTV = 交易次数 * 平均订单价值

由于试图使用概率和时间预测来预测CLTV,必须使用两种不同的模型。第一个是Beta几何/负二项分布模型(BG/NBD),它将计算预期交易次数。第二个是Gamma Gamma子模型,它将计算平均订单价值。

# 首先,将Frequency、Recency和T列拟合到BG/NBD模型,将Frequency、Monetary列拟合到Gamma Gamma子模型。 # 然后调用customer_lifetime_value函数,将BG/NBD作为第一个参数,并使用time参数指定预测长度(以月为单位)。 # 计算后,值仍然难以解释,因此应该将它们放在一个尺度上。使用scikit-learn模块中的MinMaxScaler,将CLTV预测放在0到1的尺度上。

计算和缩放后的CLTV数据如下所示:

RFM(最近一次购买、购买频率、购买金额)

为了更好地解释结果,将RFM段添加到CLTV表中,这样就可以比较两种方法的结果。首先,创建RFM指标、得分和段。

# 这是RFM结果: # https://datapane.com/u/hokay/reports/J35lD0A/rfm/ # 这是RFM段的分布: # 来源:

将结果整合在一起,将RFM段添加到CLTV中,将为解释提供更坚实的基础。还将添加1个月和12个月的预测到表中,这将引导发现一些有趣的发现,即货币对CLTV建模的影响。

# 这是添加RFM段、1个月CLTV和12个月CLTV预测后的数据: # https://datapane.com/u/hokay/reports/E7PXrY7/final-triple/

CLTV细分

由于试图根据RFM和CLTV创建更好的细分和营销策略,也将根据CLTV创建段。‘A’代表最好的客户,‘D’代表最差的客户。

# 最终表如下所示: # https://datapane.com/u/hokay/reports/aAMZX63/final-segmented/

讨论

将根据帕累托原则讨论和解释结果。帕累托原则指出,对于许多结果,大约80%的后果来自20%的原因。在情况下,期望看到收入中有80%来自前20%的客户。如果看看从两种分析中的段:

# https://datapane.com/u/hokay/reports/O7vZKl7/top20rfmclv/ - 组织忠诚度计划。 - 推广限量版产品。 - 提供特别折扣。 - 调整推荐系统。 - 关注这些群体的反馈。 - 提供特别折扣和免费运输等。 # 由于这是一个模型,应该有一些指标来评估性能。要创建一个频率/最近一次购买矩阵,计算一个人工客户在下一个时间段内要进行的预期交易次数,给定她的最近一次购买和频率: # from lifetimes.plotting import plot_frequency_recency_matrix # plot_frequency_recency_matrix(bgf) # 来源:lifetimes.readthedocs.io # 要比较数据与用拟合模型的参数模拟的人工数据: # from lifetimes.plotting import plot_period_transactions # plot_period_transactions(bgf) # 来源:lifetimes.readthedocs.io
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485