RFM客户价值分析模型

模型概述

RFM模型是用来衡量当前客户价值和潜在客户价值的重要工具和手段。RFM是指Recency(近度),Frequency(频度)、Monetary(额度),三个指标首字母组合,如图所示(图1-1):


1-1

通过RFM分析将客户群体划分成高价值客户、重点保持客户、重点发展客户、重点挽留客户、一般价值客户、一般保持客户、一般发展客户、潜在客户等八个级别,如图所示(图1-2):


1-2.png
分类客户特点:

高价值客户(高、高、高):最近消费时间较短、消费频度和消费金额都较高,这是需要重点关注和维护的客户。

重点保持客户(低、高、高):最近消费时间较长,消费频次和消费金额都较高,说明这是个一段时间没来的忠实客户,需要主动保持联系。

重点发展客户(高、低、高):最近消费时间较短、消费金额高,但消费频次较低。忠诚度不高,但是消费能力强,是非常有潜力的客户,需要重点跟进。

重点挽留客户(低、低、高):最近消费时间较长、消费频次不高,但消费金额高的客户,可能是将要流失或者已经要流失的客户,应吸引客户回流。

RFM模型的最终目的是为了在经营过程中区别出客户类群,并在此基础上针对不同类型客户进行精准化营销,进而提升客户价值,实现企业利益最大化。

模型实现

1.数据准备
我生成了一份模拟数据,该数据集共有940条数据,包含ID(主键)、R(Recency)、F(Frequency)以及M(Monetary),共4个字段。数据存储在mysql数据库中,需连接mysql并进行提取。代码如下:

#导入库
import pandas as pd
import numpy as np
import pymysql
from sklearn.cluster import KMeans

#连接数据库并导出数据
conn= pymysql.connect(host='localhost',user='root',password='123456',
                                       db='test',port=3306)
rfm_model = pd.read_sql("select * from consumption_data",con=conn)
conn.close()

#查看数据描述
rfm_model.describe()

#查看数据
frm_model.head()

数据如下图所示(图2-1):


2-1

数据描述性统计(图2-2):


2-2

2.随机选取中心点并生成分类标签
# 调用KMeans算法,n_clusters参数表示划分的类别数,
# random_state参数表示自由度
clf = KMeans(n_clusters=8,random_state=100)

# 对数据进行拟合,训练出模型
clf.fit(rfm_model)

# 查看分类标签(0-7,共8类)
clf.labels_

# 将标签添加至数据
rfm_model['label']=clf.labels_

添加标签后数据如下(图2-3):


2-3

3.查看每类数据中心点,并得出8类分组RFM值的中位数

# 查看每类数据的中心点
# 每一行代表一个类别,三列对应了R,F,M,
r = pd.DataFrame(clf.cluster_centers_,columns=['id','R','F','M'])
rmd = r['R'].median()
fmd = r['F'].median()
mmd = r['M'].median()
print(rmd,fmd,mmd)

每类数据中心点(图2-4):


2-4

RFM值中位数(图2-5):


2-5

4.把每个类中的RFM的值分别与刚刚得出的RFM的中位数的值进行比较,并添加客户分类属性。
# 标识客户类型
customer_type = []
for i in range(len(r)):
    if r.iloc[i,1]> rmd and r.iloc[i,2]>=fmd and r.iloc[i,3]>=mmd:
        customer_type.append('高价值客户')
    elif  r.iloc[i,1]<rmd and r.iloc[i,2]>=fmd and r.iloc[i,3]>=mmd:
        customer_type.append('重点保持客户')
    elif  r.iloc[i,1]>=rmd and r.iloc[i,2]<fmd and r.iloc[i,3]>=mmd:
        customer_type.append('重点发展客户')
    elif  r.iloc[i,1]<rmd and r.iloc[i,2]<fmd and r.iloc[i,3]>=mmd:
        customer_type.append('重点挽留客户')
    elif  r.iloc[i,1]>=rmd and r.iloc[i,2]>=fmd and r.iloc[i,3]<mmd:
        customer_type.append('一般价值客户')
    elif  r.iloc[i,1]<rmd and r.iloc[i,2]>=fmd and r.iloc[i,3]<mmd:
        customer_type.append('一般保持客户')
    elif  r.iloc[i,1]>=rmd and r.iloc[i,2]<fmd and r.iloc[i,3]<mmd:
        customer_type.append('一般发展客户')
    else:
        customer_type.append('潜在客户')

#添加标签
r['客户分类'] = customer_type       

添加标签后分类结果如下(图2-6):


2-6

5.把分类结果与原数据进行合并

# 结果合并
right = pd.DataFrame(r['客户分类'])
result=pd.merge(rfm_model,right,left_on='label',right_index=True)
result.sort_values(by='Id')

合并后结果如下(图2-7):


2-7

6.客户运营策略:
针对上述分类结果,我们可以对不同的客户分类采取相应的营销策略,例如:
对于高价值客户,我们需要重点保持关注,并对客户进行长期维护与联系;
对于重点保持客户,我们可以给予优惠券或其他促销活动,以吸引客户回流;
对于重点发展客户,我们可以为客户办理会员卡以提升客户消费频次;
对于重点挽留客户,我们可以定时推送消息和给予优惠券,以吸引客户回流。

小结

消费近度、消费频度、消费额度是衡量消费者价值最重要也是最容易的方法,这次的分析体现了这三个指标对营销活动的参考意义,但是在实际工作中,涉及到的维度以及客户的分类可能会更复杂,要针对不同公司、不同业务对RFM模型做出相应的调整。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容