数据分析思维RFM用户分层

发布时间 :2022-02-01 10:10

写在前面随着互联网流量红利的逐渐消失,之前粗狂式的拓客和一刀切的用户运营已经难以为继,越来越多的公司开始意识到,只靠烧钱圈用户、养用户成本太高,因为不是所有的用户都需要你重点投入,金主爸爸一定要好好维护,潜力股一定要加大投入挖掘价值,而羊毛党永远都是你应该严防的对象,这就是所谓的精细化运营,钱要花在刀刃上,要花在业务和核心用户上

网站运营思维

精细化运营讲究的是千人千面,一千类用户一千种运营策略,所以第一步就是要把用户进行分类,然后才有针对性的运营策略,而用户分类中一种尤为重要和常用的方法就是RFM

网站需要用户运营

什么是RFM

RFM最早产生于电商领域,根据客户的交易频次和交易额衡量客户的价值,对客户进行细分

数据网站运营修复

RFM是衡量客户价值的三个维度,分别为R(R)交易间隔、F(F)交易频度、M(M)交易金额组成

网站运营

R表示间隔(R):也就是客户最近一次交易距今的间隔,需要注意的是,R是最近一次交易时间到现在的间隔,而不是最近一次的交易时间,R越大,表示客户越久未发生交易,反之R越小,表示客户越近有交易发生

F表示频次(F):也就是客户在最近一段时间内交易的次数,一般来说选取一个特定的时间段,F越大,表示客户交易越频繁,反之F越小,表示客户不够活跃

M表示额度(M):也在同样的时间段内,客户交易的金额,M越大,表示客户价值越高,M越小,表示客户价值越低

有了以上个维度的数据,就可以对每个用户按照每个维度进行衡量,一般来说我们会选取一个合理的分值对R、F、M进行划分,将个维度分别分为高、低两类,组合下来就是类,也就形成了个用户群体

当然你说我每个维度分成类行不行,最终分成个用户群体不是更精细,当然没问题,但是我们能不能给出种不同的运营方案,如果给不出,如此细分不就是自嗨么

毕竟,分为多少个群体不重要,每个群体都要有个性化的运营策略才重要

下面是一张经典RFM客户细分模型图,R分值、F分值和M分值三个指标构成了一个三维立方图,在各自维度上,根据得分值又可以分为高、低两个分类,分别用、表示,最终个指标两两组合,就构成了大客户群体

对每个用户群体进行定性,例如R、F、M分值高的客户为重要价值客户,R、F、M三个分值都低的客户为潜在客户,其他类型客户可以此类推解读

RFM实际案例RFM的原理到这里就讲完了,是不是很简单

确实很简单,但是也确实很实用,在实际的工作中是如何实施这个用户分层模型的呢

下面我们就用一个实际的案例手把手教你如何进行RFM用户分层

整体来说,RFM模型实施需要以下几个关键的步骤

、数据准备下面通过一个实际的案例学习RFM分析的使用,案例是用做的,当然了E也能做,不必纠结于工具哈,首先将数据导入到变量,代码如下:=._(D:%%)#假设--是计算当天,求交易日期至计算当天的距离天数[D]=._(--)-[DDT]#从时间距离中获取天数[D]=[D]..执行以上代码,即可得到用户每一次交易日期距离指定日期的天数,如下图所示

、计算R、F、M用户的明细数据准备好后,接下来就可以计算每个客户的最近交易间隔R、交易频率F以及交易总额M,计算方法如下:最近交易间隔R:使用CID作为分组列,距离指定日期间隔天数D作为聚合列,统计函数使用最小值函数,即可得到每个客户的最近交易间隔R

交易频率F:使用CID作为分组列,OID作为聚合列,统计函数使用计数函数

交易总额M:使用CID作为分组列,订单金额S作为聚合列,统计函数使用求和函数

对应的代码如下:#统计每个客户距离指定日期有多久没有消费了,即找出最小的最近消费距离R=.(=[CID],_=F)[D].()#统计每个客户交易的总次数,即对订单ID计数F=.(=[CID],_=F)[OID].()#统计每个客户交易的总额,即对每次的交易金额求和M=.(=[CID],_=F)[S].()执行以上代码,得到的结果如下图所示

接下来使用方法,将R、F、M三个数据在客户CID维度上关联起来,因为它们拥有共同的列名,在这种情况下,参数可以省略不写,代码如下:#将R、F、M三个数据框关联,默认内连接,可省略,两表条件的关联列名均为CID,同样可省略RFMD=R.(F).(M)#修改列名RFMD.=[CID,R,F,M]执行以上代码,得到的结果如下图所示

、计算R、F、M综合分值每个客户的R、F、M数据计算好后,接下来就可以对R、F、M这三个维度进行分组打分赋值,得到对应的R分值、F分值、M分值

打分标准可以按照业务经验、平均值等标准进行划分

最好是按照业务经验划分,因为这里分类的的用户是要到后面进行精细化运营的,可以通过已有的运营策略反推这里的划分阈值,当然,如果还没有特别清晰的运营策略,也可以采用平均值进行划分

本例将R、F、M三列分别按照各自的平均值划分为高、低个组,并分别赋值分、分

R分值(R_S):距离指定日期越近,R_S越大,R&;=平均值,R_S为,R&;平均值,R_S为

F分值(F_S):定义为交易频率越高,F_S越大,F&;=平均值,F_S为,F&;平均值,F_S为

M分值(M_S):定义为交易金额越高,M_S越大,M&;=平均值,M_S为,M&;平均值,M_S为

对各个用户的RFM的数据行进行打分赋值,代码如下:#判断R列是否大于等于R列的平均值,使用将符合条件R_S列的值赋值为RFMD.[RFMD[R]&;=RFMD.R.(),R_S]=#判断R列是否小于R列的平均值,使用将符合条件R_S列的值赋值为RFMD.[RFMD[R]&;RFMD.R.(),R_S]=#同R_S赋值方法,对F_S、M_S进行赋值,但与R相反,F、M均为越大越好RFMD.[RFMD[F]&;=RFMD.F.(),F_S]=RFMD.[RFMD[F]&;RFMD.F.(),F_S]=RFMD.[RFMD[M]&;=RFMD.M.(),M_S]=RFMD.[RFMD[M]&;RFMD.M.(),M_S]=执行代码,R_S、F_S、M_S的分组分值就计算出来了,如下图所示

基于以上得出用户最终的RFM分层,如下图所示

#计算RFM综合分值RFMD[RFM]=*RFMD.R_S+*RFMD.F_S+*RFMD.M_S执行代码,得到的RFM综合分值如下图所示

CID:的分层为,对应的就是一般价值用户

、用户分层接下来结合文章开头提到的用户分层定义,将用户细分为种不同的类型

本例采用与RFM综合分值与用户类型的对应关系表映射的方式实现用户分层

首先将各个RFM综合分值与用户类型的对应关系定义为一个映射匹配表

然后再使用中的内连接方法,将RFMD与刚定义的RFM综合分值用户类型的映射匹配表,根据关联列名RFM匹配合并为一个,这样就完成了用户分层的操作,代码如下:#定义RFM综合分值与客户类型的对应关系表CT=.DF(={RFM:[,,,,,,,]T:[潜在客户,重点挽留客户,一般保持客户,重点保持客户,一般发展客户,重点发展客户,一般价值客户,高价值客户]})#将RFMD与RFM综合分值客户类型的对应关系表合并为一个数据框#默认内连接,可省略,两表条件的关联列名均为RFM,同样可省略RFMD=RFMD.(CT)执行代码,得到的数据如下图所示

可以看到,最后一列数据,就是对每个用户细分的用户分层

最后,我们来看看,每个类别的用户数是多少,代码如下:#按RFM、T进行分组统计客户数RFMD.(=[RFM,T])[CID].()执行代码,就可以得到各个客户类型的客户数了



- END -