RFM
# 概述
RFM分析是一种基于客户购买行为进行细分的市场营销技术。它通过评估客户的三个关键因素来确定哪些客户更有价值,以及如何更好地与这些客户互动。这三个因素分别是:
Recency(最近一次购买的时间):指的是客户上一次购买产品或服务距离现在的时间。较近进行购买的客户通常被认为更有可能再次购买,因为他们对品牌或产品的记忆仍然新鲜。
Frequency(购买频率):表示在特定时间段内客户购买的次数。频繁购买的客户往往对品牌有较高的忠诚度,并且可能代表了重复购买习惯的良好指标。
Monetary(消费金额):指客户在一定时期内花费的总金额。高消费额的客户显然对企业的收入贡献更大,识别并维护这些高价值客户是企业的重要任务。
通过结合这三个维度,RFM分析可以帮助企业将客户分成不同的群体,从而制定针对性的营销策略。例如,对于那些最近有过购买、经常购买并且花费较高的客户(即R、F、M值都高的客户),可以被视为最佳客户,给予特别的关注和奖励;而针对那些很久没有购买、购买频率低且消费金额也低的客户,则可能需要采取重新激活的策略。
RFM分析的优势在于其相对简单却非常有效的方法,不需要复杂的算法即可快速实施,并能产生直观且可操作的结果。这种方法非常适合用于优化客户关系管理(CRM)策略、提升客户满意度和增加销售收益。在实际应用中,企业可以根据自己的业务特点调整RFM分析的具体参数和阈值,以达到最佳效果。
# 案例演示
测试数据-示例超市.xls (opens new window)
我们依旧基于超市订单表数据进行案例演示, 数据特征如下:
- 主要使用到的字段有: 客户ID,订单时间,订单ID
- 每个客户有多个订单,一个订单可能分拆为多个子订单
# R值
即每个用户最后一次购买时间距 业务最新日期 多少天。
下面是为R值相关新增的 计算字段
首次交易日期={FIXED `客户 id` : min(`订单日期`)}
用户最后交易日期={FIXED `客户 id` : max(`订单日期`)}
业务最新日期={FIXED : max(`订单日期`)}
# R值取订单表最大日期与最后交易日期差异值, 实际使用中可以根据业务需求调整
R值=DATEDIFF('day', #{用户最后交易日期}, #{业务最新日期})
2
3
4
5
# 总体平均R值
平均R值为全体客户平均R值, 从上面的订单表可以看到,一个客户有多条记录,每条记录的R值相同,但是计算客户评价R值的时候只能取一条,类似于下面的SQL定义
select sum(R) / count(distinct `客户ID`)
-- 同 avg(R)
from (
select `客户ID`,
min(`R值`) R -- 这里因为每个客户的R值都相同,用min/max/avg都可以
from t_order
group by `客户ID`
) t
2
3
4
5
6
7
8
但是,我们在计算字段中不方便做多次汇总,改用均摊方法计算总体R值
的和
每条记录的有效R值=#{R值}/#{客户记录数}
, 上面截图中 一个客户4条记录,均摊之后则为, 1460/4, sum求和之后依旧为1460
通过LOD FIXED在全体数据记录上求平均R值:
平均R值={FIXED : sum(#{R值}/#{客户记录数}) / distinct(`客户 id`)}
# F值
即每个用户累计订单数。把每个用户的下单数做一个计数统计即可得到F值。
F值={FIXED `客户 id` : distinct(`订单 id`)}
# 总体平均F值
与平均R值一样,总体平均F值用记录均摊法求和再除以总客户数
平均F值={FIXED : sum(#{F值}/#{客户记录数}) / distinct(`客户 id`)}
# M值
即每个客户消费总额
M值={FIXED `客户 id` : sum(`销售额`)}
# 总体平均M值
总体平均F值用记录均摊法求和再除以总客户数
平均M值={FIXED : sum(#{M值}/#{客户记录数}) / distinct(`客户 id`)}
# 客户分组
客户RFM综合评价,会按照客户自身R/F/M每一项指标是否高于总体平均值,高于平均值记录为1,低于平均值记录为0,于是把用户划分为8类,具体如下:
增加计算字段:
R=IF(#{R值} > #{平均R值}, 1, 0)
F=IF(#{F值} > #{平均F值}, 1, 0)
M=IF(#{M值} > #{平均M值}, 1, 0)
RFM=CONCAT(#{R}, #{F}, #{M})
2
3
4
为了RFM值可读,案例中对RFM维度配置了维度字典