CRM Customer RelationShip Management 客户关系管理:要求企业站在客户的角度,利用企业信息技术对获取的客户数据进行分析,快速识别客户需求变化,为客户提供更专业、更具个性化的产品或服务、从而提升客户对企业的忠诚度,最大化忠诚客户的支付溢价,进而提高企业核心竞争力。
因为一般而言,企业吸引一个新客户所消耗的成本远高于维护老客户的成本,并且忠诚客户能带来额外附加价值服务的交叉购买。而对客户终身价值CLV Customer Lifetime Value的关注是客户关系管理的重要内容。
简单的讲述一下客户生命周期:它是一种动态关系,是一个连续性,分阶段发展的过程。且各阶段相互关联的。其阶段分别为考察、形成、稳定和退化。
在这个过程中我们主要思考的也是如何拉新,提升留存,通过分析流失的原因将其减少等等。
而CLV 研究的目的是在现有客户购买行为模式的基础上预测客户未来可能为企业创造的价值。毕竟企业总体资源有限,而CLV分析会帮助企业将有限的资源放在未来能为企业带来高价值的客户上面,使收益最优。
提一个有趣的定律’80/20/30‘:企业80%的收益是由价值最高的20%客户所创造的,而价值最低的30%客户不仅不会创造价值,还会消耗企业的50%利润。
用客户的现金贴现直接衡量一个客户的终身价值,其结果往往有较大偏差。于是我们便从客户的购买行为视角对CLV做了进一步研究,而依据客户交易行为的模型有(RFM,SMC,BG/NBD)。
而以上三者都是紧紧围绕客户而展开的一系列活动。它们是一个相互依存、相互支撑的有机整体。CLV是CRM的核心内容。而客户生命周期直接影响CLV。比较客户在不同阶段所表现出的对企业的忠诚度、满意度、消费行为模式、流失率都有其阶段性的特征。
频繁被应用的算法常有关联规则、K-means聚类、朴素贝叶斯分类、回归预测等。
是以在三个维度上的得分进行组合构成不同客户的行为模式以及价值形式。是一种有效的客户细分方法。但是它不能直接算出客户未来购买行为的各个量的值,比如客户活跃、客户未来购买次数等,只是对客户历史购买行为进行简单分析,使得企业对客户以后要发生得行为有个比较概括得了解,对客户得大致分类。但对于客户以后将要发生的购买行为并不能较为直观的说明,并没有有效利用客户行为数据为未来购买行为进行很好的预测。
简单讲一下SMC模型:其是能够依据客户购买历史购买行为进行预测的模型之一。这个模型是真正意义上的客户购买行为预测模型之一。通过这个模型,可以很好的计算出客户的活跃度,客户在未来一段时间的期望购买次数,以及在这段时间实现一定次数的购买的可能性。它是GB/NGD的前身模型基于以下五条假设:
泊松分布:离散概率分布,当二项分布的n很大而p很小时,泊松分布可作为二项分布的近似,其中λ(均值和方差)为np。
而泊松分布适用于描述单位时间(或空间)内随机事件发生的次数。
gamma分布:连续概率函数。假设随机变量X为等到第α件事发生所需之等候时间,密度函数为:
其中阿尔法为形状参数,贝塔为比例参数。则称随机变量X服从参数阿尔法、贝塔 的gamma分布。
SMC模型所需信息:最后一次交易时间以及这段时间的交易频率。这条信息的表达式是
x为(0,T)时间段内的历史购买次数。 tx 为最后一次交易的时间。
只不过是基于五个假设条件给出的,因而有它的局限性。对于客户数据符合这个条件的,可以据此计算。其参数估计比较复杂,而且直接影响到后面的计算。在实际应用中不方便。
3. BG/NBD模型:基于SMC模型的改进。大部分内容都是照搬SMC,唯一的不同就是SMC假定退出随时可能发生,与实际购买行为无关。如果我们假定客户在发生某次购买后立即推出,那么就是用BG/NBD模型。其基于下列五个假设:假设同上面没有区别不是很大,在这里不做重复。
根据概率密度函数搭建:
具体可参考其它论文。在这里只是给出相关概念。最后根据极大似然估计求出4个参数值(r,
阿尔法 ,a,b)。楼下将会使用lifetimes模块。
利用python模块lifetimes
frequency:代表客户重复购买多少次。即用户只购买一次的话,F值为0。
T :用户首次购买到现在所产生的时间。
recency :第一次购买到最后一次购买之间的时间间隔。
Monetary_value :该客户的购买平均金额。
#数据集dfdf = data[['买家昵称','付款日期']]df.head()
#利用summary_data_from_transaction_data函数处理数据使其称为标准格式from lifetimes.utils import summary_data_from_transaction_datasummary = summary_data_from_transaction_data(df, '买家昵称', '付款日期',observation_period_end='2019-6-30')summary.head()
在这里的F值是忽略了第一次购买,也即是如果只有一次购买,那么F为0
导入BG/NBD模型,通过模型拟合,得到4个参数(r, 阿尔法 ,a,b)。
from lifetimes import BetaGeoFitterbgf = BetaGeoFitter(penalizer_coef=0.0)#L2正则项bgf.fit(summary['frequency'], summary['recency'], summary['T'])print(bgf)bgf.summary
继而预测测客户的购买行为,在未来这个周期内购买的可能性
t = 1 #周期,预测t个周期内的购买summary['predicted_purchases'] = bgf.conditional_expected_number_of_purchases_up_to_time/可以调用perdict(t, summary['frequency'], summary['recency'], summary['T'])summary.sort_values(by='predicted_purchases').tail(5)#summary.sort_values(by='predicted_purchases').head(5)
tail
head
生命周期价值预测,在预测价值时,需要用到第四个参数:用户交易的次均金额。但是该模型有个重要前提:购买频次的recency和money无相关性。
from lifetimes.utils import summary_data_from_transaction_datadf = data[['买家昵称','付款日期','实付金额']]summary = summary_data_from_transaction_data(df, '买家昵称', '付款日期','实付金额',observation_period_end='2019-6-30')summary = summary[summary['frequency']>0]summary[['frequency','monetary_value']].corr()
确定无关后,预测客户预期的lifetime value.
from lifetimes import GammaGammaFitterggf = GammaGammaFitter(penalizer_coef = 0)ggf.fit(summary['frequency'], summary['monetary_value'])print(ggf)求得参数
print(ggf.conditional_expected_average_profit( summary['frequency'], summary['monetary_value'] ).head())
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()
相关概念
CLP Customer Lifetime Profit 顾客全生命周期利润
CCV Customer Current Value 客户当前生命价值
CPV Customer Potential Value 客户增值潜力
张春莲. 客户购买行为的BG/NBD预测模型及其应用研究[D].哈尔滨工业大学,2006.
数据集地址:
https://github.com/seizeeveryday/DA-cases/tree/master/RFM
文源:数据管道
联系客服