关于预测客户生命周期价值(CLV)的权威指南
商业世界已经完全改变,并且比以往任何时候都更围绕其客户。以客户为中心的方法是当今市场的新规范。原因是人们在选择产品/服务时有足够的选择。
在这个企业为了争取更好的服务和从竞争对手中抢夺客户而相互竞争的时代,对他们增长和保留现有客户群的需求非常重要。
但是,与获取客户的过程类似,保留现有客户的过程也要付出巨大的代价。(通过提供折扣,有针对性的报价等)
因此,您可能会认为,他们是否需要保留每个客户?好吧,不是真的。在每项业务中,有些客户通过成为忠实的客户来为业务创造更多的价值,而有些仅仅是一次性购买者。识别此类客户群并仅针对高价值客户将有助于企业至少在这个竞争激烈的市场中得以维持。
现在,真正的挑战开始了—?如何找到客户价值?在回答这个问题之前,让我们先定义“客户价值”是什么意思。
什么是客户价值?
客户价值或客户生命周期价值(CLV)是客户在整个生命周期内与您的企业进行的交易/购买的总货币价值。在这里,生命周期是指直到您的客户与您购买之后再转移到竞争对手的时间段。
现在,让我们看一下计算客户生命周期价值的一般公式:
客户生命周期价值公式
上面的公式可能看起来更简单,但是当您参考“客户生命周期价值”的定义时,隐藏在其中的复杂性将会展开。这是因为我们试图通过使用业务的历史交易数据来预测客户的未来销售和货币价值。
但是,一些出色的分析头脑已经为我们努力工作,并创建了一些框架/模型来轻松处理此类复杂性。
通常,有两种方法可以为CLV问题建模:
历史方法:
汇总模型?-通过使用基于过去交易的每位客户的平均收入来计算CLV。此方法为我们提供了CLV的单个值。
同类群组模型?-根据交易日期等将客户分为不同的同类群组,并计算每个同类群组的平均收入。该方法给出每个队列的CLV值。
预测方法:
机器学习模型?-使用回归技术拟合过去的数据来预测CLV。
概率模型?-它试图将概率分布拟合到数据中,并估计交易的未来计数和每笔交易的货币价值。
在本文中,我将引导您完成上述所有类型,但“机器学习模型”除外(顺便说一句,该模型将CLV建模为正常的回归/分类建模问题)。
这将是一篇长篇文章,所以请自己做好准备。但是,我可以向您保证,阅读本文后,您将对该主题和各种计算客户生命周期价值的方法有很好的理解。
数据集信息
在本案例研究中,我们将使用UCI机器学习存储库中的在线零售数据集。
这是一个交易数据集,其中包含2010年12月12日至2011年12月9日之间在英国注册的非商店在线零售发生的所有交易。该公司主要销售各种场合的独特礼品。公司的许多客户都是批发商。
属性信息:
发票编号:发票编号。标称,唯一分配给每个交易的6位整数。如果此代码以字母“ c”开头,则表示已取消。
StockCode:产品(项目)代码。标称,唯一地分配给每个不同产品的5位整数。
描述:产品(项目)名称。名义上
数量:每笔交易中每个产品(项目)的数量。数字。
InvoiceDate:发票日期和时间。数字,每笔交易生成的日期和时间。
单价:单价。数值,单位为英镑的产品价格。
客户编号:客户编号。标称,唯一分配给每个客户的5位整数。
国家:国家名称。名义,每个客户居住的国家/地区的名称。
为了节省时间,本文不讨论完整的数据预处理步骤。但是您可以在GitHub存储库中检查相同的内容以及本文的完整代码。
在所有预处理之后,数据将如下所示:
客户生命周期价值数据头
客户生命周期价值明细
历史方法
1.汇总模型:
计算CLV的最简单和最古老的方法是此“聚合/平均”方法。假设所有客户的平均支出和流失率保持不变。
这种方法不会在客户之间进行区分,并且会在总体上为CLV产生单一价值。如果某些客户以高价值和高交易量进行交易,这最终导致平均CLV值出现偏差,这将导致不切实际的估计。
如果您回想起上面讨论的公式,则除利润率外,其他所有变量都可以估算/计算。因此,在此示例情况下,我假设每笔交易的利润率约为5%。
让我们将数据转换为所需的格式。
客户生命周期价值-必填格式
然后,计算将在CLV公式中使用的变量。
公式元素
现在,我们具有所有必需的变量来计算Aggregate模型的CLV。
客户终身价值-价值
从我们的基本模型中,我们得出每个客户的CLV值为$ 471K。您认为这个数字有意义吗?好吧,这不适合我!原因是由于来自极少数客户的很高的销售价值,这实际上使总数出现了偏差。此外,并非所有客户都一样!自己看看:
总销售额
根据描述性统计数据,很明显,在我们的数据中,几乎有75%的客户的销售额不到2000美元。而最大销售价值约为28万美元。如果现在看一下CLV的价值,您是否认为与该公司进行交易的所有客户在他们的一生中真的可以购买超过47万美元的商品吗?当然不!它针对每个客户或至少针对每个客户群而有所不同。这是该模型的另一个限制。
2.同类群组模型:
我们可以尝试将他们分成多个组并计算每个组的CLV,而不是简单地将所有客户都视为一个组。此模型克服了简单的汇总模型的主要缺点,该模型将整个客户视为一个单一的组。这称为同类群组模型。
该模型的主要假设是,同类群组中的客户支出相似或总体上表现相似。
因此,问题将是:“我们如何将客户分组?”
将客户分组的最常见方法是按客户的开始日期(通常按月份)。最佳选择取决于客户获取率,业务的季节性以及是否可以使用其他客户信息。
在这种情况下,我将根据他们的开始月份将他们分为不同的群组。因此,我将获得12个客户群(1月至12月)。
首先,让我们转换数据。
客户生命周期价值按销售额分组
然后计算每个同类群组的CLV。
每组队列
这是这些月度群组中每个客户的最终CLV值。
每月一次
现在,如果您查看结果,则从1月到12月的12个月内,我们有12个不同的CLV值。在不同月份获得的客户具有不同的CLV值。这是因为,可以使用不同的活动等来获取它们,因此它们的行为可能与其他行为不同。
另外,如果查看一月和十二月的值,则CLV值会很高。这可能是一个错误的值,因为我们使用的数据来自在线零售商店,该商店向批发商/公司出售礼物,而圣诞节,新年等节日则在这些月份。这就是为什么我们看到在1月和12月开始的那些客户具有很高的CLV值的原因。
预测方法
1.概率模型:
此类模型尝试将概率分布拟合到数据,然后使用该信息来估计CLV方程的其他参数(例如,未来交易的数量,未来货币价值等)。
有各种各样的概率模型可以用来预测未来的CLV。这里要注意的重要一件事是,并非可以使用单个模型来预测CLV方程中的所有变量。通常,交易变量(购买频率和客户流失)和货币变量(平均订单价值)是分别建模的。以下是可用于相同模型的概率模型的列表。
慢性概率模型
在本案例研究中,我们将对交易变量使用BG / NBD模型,对货币变量使用Gamma-Gamma模型。
BG / NBD代表Beta几何/负二项分布。
这是用于预测CLV的最常用概率模型之一。这是Pareto / NBD模型的替代方法,后者也是CLV计算中最常用的方法之一。对于这种情况,我们将仅关注BG / NBD模型,但是如果要在Pareto / NBD中尝试,则步骤相似。
具体来说,BG / NBD和Pareto / NBD模型实际上都试图预测每个客户的未来交易。然后将其与Gamma-Gamma模型相结合,该模型增加了客户交易的货币方面,我们最终获得了客户生命周期价值(CLV)。
BG / NBD模型具有以下假设:
1.当用户处于活动状态时,时间t中的事务数由带费率λ的泊松分布描述。
2.用户间交易的异质性(用户间购买行为的差异)具有形状参数为r和比例参数为a的Gamma分布。
3.在任何可能性为p的交易之后,用户可能会变得不活跃,并且其辍学点在具有几何分布的购买之间进行分布。
4.辍学概率的异质性具有Beta分布,具有两个形状参数alpha和beta。
5.交易率和辍学概率在不同用户之间独立变化。
这些是此模型用于预测客户未来交易的一些假设。
该模型使分布适合历史数据并了解分布参数,然后使用它们来预测客户的未来交易。
我们不必担心自己执行这种复杂的概率模型。有一个名为Lifetimes的Python软件包,它使我们的生活更轻松。该软件包主要用于辅助客户生命周期价值计算,预测客户流失等。它具有CLV计算所需的所有主要模型和实用功能。
在这种情况下,我们将仅使用它。让我们进入编码。
一生
首先,我们需要根据交易数据创建一个汇总表。摘要表不过是RFM表。(RFM-新近度,频率和货币值)
为此,我们可以使用Lifetimes包中的summary_data_from_transactions_data函数。它的作用是,将交易级别的数据汇总到客户级别,并计算每个客户的频率,新近度,T和money_value。
频率?-重复购买的次数(超过1次购买)
新近度?-第一笔交易与最后一笔交易之间的时间
T-?首次购买到交易期结束之间的时间(考虑进行分析的时间范围的最后日期)
货币价值?-它是给定客户销售价值的平均值
总结
在这里,频率和新近度的值为0表示这些是一次性购买者。让我们检查一下我们的数据中有多少个这样的一次性购买者。
频率图
现在,让BG / NBD模型适合我们的摘要数据。
BG / NBD模型可作为Lifetimes包中的BetaGeoFitter类获得。
Beta地理钳工
上表显示了历史数据的估计分布参数值。该模型现在使用它来预测未来的交易和客户流失率。
因此,假设您想根据历史数据来了解客户现在是否还活着(或预测客户流失)。生命周期包提供了一种完成该任务的方法。您可以使用:
model.conditional_probability_alive():此方法计算具有历史记录(频率,新近度,T)的客户当前还活着的概率。
plot_probabilty_alive_matrix(model):这个来自lifetimes.plotting的函数将帮助直观地分析新近度和频率与在世客户之间的关系。
活着的概率
绘制寿命
客户还活着的可能性
让我解释以上两个结果。
存活的可能性是根据客户的新近度和频率来计算的。所以,
如果客户购买了多次(频率)并且第一笔和最后一笔交易之间的时间很高(新近度),那么他/她还活着的可能性就很高。
类似地,如果客户的频率较低(购买一次或两次),并且第一次与最后一次交易之间的时间很短(新近度),那么他/她的存活概率就很高。
使用此训练有素的模型,我们可以做的下一件事是预测每个客户将来可能发生的交易。您可以使用:
model.conditional_expected_number_of_purchases_up_to_time():给定从人口(或整个人口)中随机选择的个体的购买历史(频率,新近度,T),计算到时间t的预期重复购买次数。
预测未来交易
现在,我们可以预测客户在未来10天内的购买次数。
要检查预测的数字是否有意义,我们可以尝试如下操作:
让我们以CustomerID-14911,
在372天内,他购买了131次。因此,有一天他购买了131/372 = 0.352次。因此,10天= 3.52倍。
在这里,我们的预测结果为8.95,与我们上面所做的人工概率预测相当接近。造成差异的原因是由于对客户的各种假设所致,例如辍学率,将客户寿命建模为指数分布等。
现在我们已经预测了预期的未来交易,现在我们需要预测每笔交易的未来货币价值。
如前所述,BG / NBD模型只能预测客户的未来交易和客户流失率。为了增加问题的货币方面,我们必须使用Gamma-Gamma模型对货币价值进行建模。
Gamma-Gamma模型的一些关键假设是:
1.客户给定交易的货币价值在其平均交易价值附近随机变化。
2.平均交易价值因客户而异,但对于任何给定客户而言,均不随时间变化。
3.跨客户的平均交易价值的分配与交易过程无关。
作为将模型拟合到数据之前的第一步,我们必须检查模型所做的假设是否对数据有利。只要满足,我们就必须进一步。
在这三者中,最终假设可以得到验证。这意味着交易频率和货币价值之间不应存在任何关系。使用皮尔森相关性可以很容易地验证这一点。
注意:我们只考虑与该业务重复购买的客户,即频率>0。因为,如果频率为0,则表示他们是一次性客户,被视为已经死亡。
摘要频率
货币价值
相关性似乎非常弱。因此,我们可以得出结论,即满足了假设,并且可以使模型适合我们的数据。
终生伽玛
接下来,我们可以使用模型预测每笔交易的预期平均利润和客户生命周期价值。
model.conditional_expected_average_profit():此方法计算一组一个或多个客户的每笔交易平均利润的条件期望。
model.customer_lifetime_value():此方法计算一组一个或多个客户的平均生命周期值。该方法将BG / NBD模型和预测范围作为参数来计算CLV。
货币价值汇总
注意:之所以提到平均预期销售额,是因为我们使用的货币价值是实际销售价值,而不是利润。使用以上方法,我们将获得平均销售额,最后,我们可以将结果乘以利润率,得出实际利润值。
预期平均销量
这些值似乎很好。现在,让我们直接使用生命周期包中的方法来计算客户生命周期值。
这里要注意的三个主要重要事项是:
时间: customer_lifetime_value()方法中的此参数以月为单位,即t = 1表示一个月,依此类推。
freq:此参数是您指定数据所在时间单位的位置。如果数据是每日级别,则为“ D”,每月为“ M”,依此类推。
discount_rate:此参数基于DCF(折现现金流)的概念,在该概念中,您将以折现率对未来货币价值进行折现,以获取该现金流的现值。在文档中,给出的是每月0.01(每年?12.7%)。
客户生命周期价值预测值
您也可以手动从未来的交易(的预测数计算CLV pred_num_txn)和每笔交易的预期平均销售(exp_avg_sales)。
手动预测
这两个CLV值都非常接近,并且在接下来的30天中似乎很合理。
这里要注意的一件事是,我们为CLV计算的两个值都是销售值,而不是实际利润。为了获得每个客户的净利润,我们可以在开始时通过将销售价值乘以利润率来创造利润价值,或者现在就可以这样做。
客户生命周期价值利润率
最后,我们预测了未来30天每个客户的CLV。
市场营销团队现在可以使用此信息来定位客户并增加他们的销售额。
而且,很难针对每个客户。如果我们可以访问客户统计数据,则可以先创建客户细分,然后预测每个细分的CLV值。然后,可以将该细分级别信息用于个性化定位。如果没有客户统计数据的访问/可用性,那么一种简单的方法将是使用RFM细分,然后预测这些RFM细分的CLV。
我希望这可以帮助您了解“客户生命周期价值”计算背后的概念以及各种计算方法。
题库