RFM模型概述
R=Recency距离最近一次交易的时间:用来代表客户粘性,分5、4、3、2、1,五个等级,5代表最后一次交易距离当前时间进、1代表最后一次交易距离当前时间远
F=Frequency交易频率:用来代表客户忠诚度,分5、4、3、2、1,五个等级,5代表交易次数/频率大客户忠诚度高、1代表交易次数/频率小客户忠诚度低
M=Monetary交易金额:用户代表客户贡献的收入,分5、4、3、2、1,五个等级,5代表交易金额大、1代表交易小
RFM三个维度、每个维度有五个值,理乱上会有125种客户层级,本文把客户分为重要、中等、一般三层,每层4种,共划分为12类客户群体,如下:
客户类型 | R(客户粘性) | F(忠诚度) | M(收入) |
---|---|---|---|
重要价值 | R>=4 | F>=4 | M>=4 |
重要保持 | R<4 | F>=4 | M>=4 |
重要发展 | R>=4 | F<4 | M>=4 |
重要挽留 | R<4 | F<4 | M>=4 |
中等价值 | R>=3 | F>=3 | 2<=M<4 |
中等保持 | R<3 | F>=3 | 2<=M<4 |
中等发展 | R>=3 | F<3 | 2<=M<4 |
中等挽留 | R<3 | F<3 | 2<=M<4 |
一般价值 | R>=2 | F>=2 | M<2 |
一般保持 | R<2 F>=2 | M<2 | |
一般发展 | R>=2 | F<2 | M<2 |
一般挽留 | R<2 | F<2 | M<2 |
RFM值划分的依据:
简单粗暴型(固定值)
R=Recency距离最近一次交易的时间
5天:5
10天:4
15天:3
20天:2
其它:1
F=Frequency交易频率/次数
<=1次:1
1<至<=4次:2
4<至<=7次:3
7<至<=10次:4
其它:5
M=Monetary交易金额
<=100:1
100<至<=500:2
500<至<=1000:3
1000<至<=1500:4
其它:5
具体间距值根据实际业务动态分配简单算法型(根据算法算出固定值)
R值:取所有客户的距离最近一次交易的时间,算出平均值、中位值、四分位数等,然后确定R值划分依据
F值:取所有客户的交易次数,算出平均值、中位值、四分位数等,然后确定F值划分依据
M值:取所有客户的交易金额,算出平均值、中位值、四分位数等,然后确定M值划分依据
注意这个计算区间可以是最近一年、两年全部生命周期等根据k-means等聚类算法自动聚合人群
RFM模型 tableau 实现
数据源:
计算RFM模型需要包含订单编码、会员ID、订单金额、创建时间四列
计算R值:根据创建时间计算每个会员最后一次下单时间;
计算F值:根据订单编码计算每个会员的下单次数;
计算M值:根据订单金额计算每个会员的下单金额;
源数据中一行代表一个订单,需要根据会员编码排重单个会员的R、F、M值;
简单粗暴型(固定值) tableau实现
计算R(最后一次下单距离当前时间)
1.计算最近一笔交易距离当前时间
DATEDIFF('day',[gmt_create],#2019-05-25#)
2.创建参数R
5天:5
10天:4
15天:3
20天:2
3.计算R的人数
IF [最近一笔交易距离当前时间] <= [R=5] THEN '5'
ELSEIF [最近一笔交易距离当前时间] <= [R=4] THEN '4'
ELSEIF [最近一笔交易距离当前时间] <= [R=3] THEN '3'
ELSEIF [最近一笔交易距离当前时间] <= [R=2] THEN '2'
ELSE '1'
END
4.查看R的人数
以上计算方式,没有根据会员ID排除重复项,需要按照以下修复一下:
0.计算每个人最后一次下单时间
{FIXED [member_id]:MAX([gmt_create])}
1.计算最近一笔交易距离当前时间
DATEDIFF('day',[最后一次下单时间],#2019-05-25#)
后面再执行2、3、4步骤就正常了
函数解释
DATEDIFF(单位,开始时间,结束时间):结束时间-开始时间
[gmt_create]:订单创建时间
2019-05-25:报表是5-24号导出的,故用5-25算当前时间
FIXED:使用指定的维度计算聚合
MAX:计算最大值
计算F(计算消费次数)
1.计算每个人的交易次数
{ FIXED [member_id]:COUNTD([code])}
2.创建参数F
<=1次:1
1<至<=4次:2
4<至<=7次:3
7<至<=10次:4
其它:5
3.计算F的人数
IF [交易次数] <= [F=1] THEN '1'
ELSEIF [交易次数] <= [F=2] THEN '2'
ELSEIF [交易次数] <= [F=3] THEN '3'
ELSEIF [交易次数] <= [F=4] THEN '4'
ELSE '5'
END
函数解释
COUNTD:返回组中不同项的数量
计算M(计算消费金额)
1.计算每个人的交易金额
{ FIXED [member_id]:SUM([payable_money])}
2.创建参数M
<=100:1
100<至<=500:2
500<至<=1000:3
1000<至<=1500:4
其它:5
3.计算M的人数
IF [交易次数] <= [F=1] THEN '1'
ELSEIF [交易次数] <= [F=2] THEN '2'
ELSEIF [交易次数] <= [F=3] THEN '3'
ELSEIF [交易次数] <= [F=4] THEN '4'
ELSE '5'
END
计算RFM
-
创建RFM计算字段
IF [R值]>=4 AND [F值]>=4 AND [M值]>=4 THEN '重要价值客户'
ELSEIF [R值]<4 AND [F值]>=4 AND [M值]>=4 THEN '重要保持客户'
ELSEIF [R值]>=4 AND [F值]<4 AND [M值]>=4 THEN '重要发展客户'
ELSEIF [R值]<4 AND [F值]<4 AND [M值]>=4 THEN '重要挽留客户'
ELSEIF [R值]>=3 AND [F值]>=3 AND 2<=[M值] AND [M值]<4 THEN '中等价值客户'
ELSEIF [R值]<3 AND [F值]>=3 AND 2<=[M值] AND [M值]<4 THEN '中等保持客户'
ELSEIF [R值]>=3 AND [F值]<3 AND 2<=[M值] AND [M值]<4 THEN '中等发展客户'
ELSEIF [R值]<3 AND [F值]<3 AND 2<=[M值] AND [M值]<4 THEN '中等挽留客户'
ELSEIF [R值]>=2 AND [F值]>=2 AND [M值]<2 THEN '一般价值客户'
ELSEIF [R值]<2 AND [F值]>=2 AND [M值]<2 THEN '一般保持客户'
ELSEIF [R值]>=2 AND [F值]<2 AND [M值]<2 THEN '一般发展客户'
ELSEIF [R值]<2 AND [F值]<2 AND [M值]<2 THEN '一般挽留客户'
END
-
查看RFM的值
注意:由于一般价值、一般保持、重要发展、重要挽留类型的客户数量为0,故没有展示出来