RFM模型

RFM模型介绍

RFM模型是衡量客户价值和客户创利能力的重要工具和手段。在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的。该机械模型通多一个客户的近期购买行为、购买总体频率,以及花了多少钱3项指标来描述该客户的价值状况。

最近一次消费(Recency)

消费频率(Frequency)

消费金额(Monetary)

R/F/M计算(sql处理法)

1、R值计算

可选取2020-12-31日(最后一天)作为判断最近一次消费的距离日期

SELECT customerid,(to_date('2020-12-31','yyyy-mm-dd')-to_date(MAX(date_id),'yyyy-mm-dd')) R_time

FROM customer_order

GROUP BY customerid

ORDER BY R_time

图片.png
  • 根据分析结果显示的天数差来反应客户忠诚度。天数差越小说明客户忠诚度越高
    2、F值计算
    频率帮助我们了解客户进行了多少次消费
SELECT customerid,count(DISTINCT invoiceno) as F_times
FROM customer_order
GROUP BY customerid;
图片.png

3、M值计算

SELECT customerid,sum(total_price) M_times
FROM customer_order
GROUP BY customerid;
  • 根据计算可以了解到交易金额的主要范围

4、RFM数据汇总
为方便后续数据处理,为RFM值创建视图

CREATE VIEW view_rfm AS
(select CustomerID,
       (to_date('2020-12-31','yyyy-mm-dd')-to_date(MAX(date_id),'yyyy-mm-dd')) "天数差",
       count(DISTINCT invoiceno) "消费次数",
       sum(total_price) "消费金额" s
from customer_order
group by CustomerID

5、RFM评分

#N,n,a自定义界值
SELECT CustomerID,天数差,消费次数,消费金额,
(case when 天数差<=N1 then 5
when  天数差 >N1 and 天数差 <=N2 then 4 
when 天数差>N2 and 天数差<=N3 then 3  
when 天数差>N3 and 天数差<=N4 then 2 else 1 END) "R评分",
(case when 消费次数<=n1 then 1
when  消费次数 >n1 and 消费次数 <=n2 then 2 
when 消费次数>n2 and 天数差<=n3 then 3 
when 消费次数>n3 and 消费次数<=n4 then 4 else 5 END) "F评分",
(case when 消费金额<=a1 then 1
when  消费金额 >a1 and 消费金额 <=a2 then 2 
when 消费金额>a2 and 消费金额<=a3 then 3  
when 消费金额>a3 and 消费金额<=a4 then 4 else 5 END) "M评分"
from view_rfm;
图片.png

6、客户分层阈值
RFM评分完成,保存视图为view_rfm1,用各自的平均值做为客户划分的阈值,再做最后的客户分层处理

select ROUND(avg(R评分),1) "R平均值",ROUND(avg(F评分),1) "F平均值",ROUND(avg(M评分),1) "M平均值"
FROM view_rfm1;
图片.png
select CustomerID,
(case when R评分>3 then 1 else 0 END)  "R值",
(case when F评分>1 then 1 else 0 END)  "F值",
(case when M评分>1.1 then 1 else 0 END)  "M值"
FROM view_rfm1;
# RFM完成后,保存视图为view_rfm2
图片.png

7、客户分层
根据RFM阈值和客户评分分层表,对客户行为进行分层处理

图片.png
SELECT CustomerID,
(case when R值=1 and F值=1 and M值=1 then '重要价值客户'
  when R值=0 and F值=1 and M值=1 then '重要唤回客户'
  when R值=1 and F值=0 and M值=1 then '重要发展客户'      
  when R值=0 and F值=0 and M值=1 then '重要挽留客户'
  when R值=1 and F值=1 and M值=0 then '一般价值客户'
  when R值=1 and F值=0 and M值=0 then '一般发展客户'
  when R值=0 and F值=1 and M值=0 then '一般保持客户' 
ELSE '一般挽留客户' END) "客户分层"
from view_rfm2
  • 重要价值客户,RFM值都很高,可为其提供优质专属服务,提高其消费体验,增加客户忠诚度

    重要发展客户,消费频率低,但是R和M值都很高,可以进行定向推广或提供价格优惠,提高其消费频次

    重要唤回客户,最近消费的时间较为久远,可能存在流失,但以前的消费金额与频率较高,需了解具体长时间未消费的原因,针对性提供对策

    重要挽留客户,消费金额高,但长时间未进行消费且消费频率低,可主动联系或举行老客户召回活动,尽可能挽留

R/F/M计算(python处理法)

#画RFM,先对数据进行透视
rfm=df.pivot_table(index='user_id',
               values=['date_id','total_price','invoiceno'],
               aggfunc={'date_id':'max',
                       'total_price':'sum',
                       'invoiceno':'sum'})

RFM计算:

#获取最近消费,可选取2020年最后一天作为判断最近一次消费的距离日期
rfm['R']= (rfm.to_date('2020-12-31','yyyy-mm-dd') - rfm.order_dt.max())/np.timedelta64(1,'D')
# 重命名 R :消费时间  F:消费金额  M:消费频次
rfm.rename(columns={'order_products':"F",'order_amount':'M'},inplace=True)
#和各自的均值比较
rfm[['R','F','M']].apply(lambda x:x-x.mean())
#定义打标签的函数
def rfm_func(x):
    level=x.apply(lambda x:'1' if x>=0 else '0')
    # level 的类型是 series,index 是 R、F、M
    label=level.R + level.F + level.M
    d={# R 为1 表示比均值大,离最早时间近,F为1 表示 消费金额比较多,M 为1 表示消费频次比较多,所以是重要价值客户
        '111':'重要价值客户',
        '011':'重要保持客户',
        '101':'重要发展客户',
        '001':'重要挽留客户',
        '110':'一般价值客户',
        '010':'一般保持客户',
        '100':'一般发展客户',
        '000':'一般挽留客户',
    }
    result=d[label]
    return result
# 注意这里是要一行行的传递进来,所以 axis=1,传递一行得到一个 111,然后匹配返回一个值
rfm['label']=rfm[['R','F','M']].apply(lambda x:x-x.mean()).apply(rfm_func,axis=1)

导入excel表中进行Powerbi作图

#对标签求和计数
rfm.groupby('label').sum()
rfm.groupby('label').count()
#导入excel表中
rfm.to_excel(r'.\临时表\RFM模型.xlsx'
图片.png
  • RFM 的划分标准应该以业务为准,也可以通过切比雪夫去除极值后求均值,并且 RFM 的各个划分标准可以都不一样
  • 尽量用小部分的用户覆盖大部分的额度;不要为了数据好看划分等级
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • “RFM分析,是用户精细化运营中比较常见的分析方法了。” 今天和大家分享一下数据分析中比较常用的一个分析框架:RF...
    首席数据科学家阅读 2,844评论 1 6
  • 导读:学习随笔,近期一直在研究关于用户的数据分析产品,网上翻阅了诸多文集,想想还是自己落笔记录下过程。该篇文章主要...
    唛伢旳稥炁阅读 13,214评论 0 33
  • 假设因为某种原因,你需要召回你的老客户。不同消费属性层级的老客户,需要不同的召回触动点,因此你可能需要对你的老客户...
    白驹过隙的白阅读 669评论 0 0
  • RFM模型概述 R=Recency距离最近一次交易的时间:用来代表客户粘性,分5、4、3、2、1,五个等级,5代表...
    波_洛阅读 2,695评论 1 4
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 125,844评论 2 7