Bootstrap

细说数据分析模型之RFM模型以及代码实现

系列文章目录

第一章 RFM模型以及代码实现


目录

系列文章目录

前言

                   一、定义与核心思想

二、指标解释

三、应用与方法

四、优点与局限性

总结



前言

RFM模型是一种被广泛使用的营销模型,又称客户价值模型。以下是对RFM模型的详细定义

一、定义与核心思想

RFM模型通过三个关键指标:R(Recency,最近购买时间)、F(Frequency,购买频率)、M(Monetary,购买金额)来对客户进行分群,从而衡量客户的价值和创收能力。该模型的核心思想是基于客户的购买历史数据,通过深入分析客户的购买行为,实现客户细分、精准营销和个性化服务,以提高客户满意度和企业利润。

二、指标解释

  1. R(Recency):指客户最近一次购买时间与截止时间的间隔。这个指标反映了客户的活跃度和忠诚度。通常情况下,最近一次购买时间的间隔越短,客户对商品或服务越有可能感兴趣,因此价值也越高。
  2. F(Frequency):指客户在一定时间内的购买次数。这个指标体现了客户对产品或服务的偏好度和忠诚度。购买频次越高的客户,其满意度和忠诚度通常也越高,因此客户价值也越大。
  3. M(Monetary):指客户在一定时间内的累计购买金额。这个指标代表了客户的付费能力和购买意愿。消费金额越大的客户,其消费能力自然也越大,因此价值也越高。

三、应用与方法

  1. 数据收集与处理:企业首先需要收集客户的交易数据,并进行清洗和聚合处理,以便后续计算RFM指标。
  2. 计算RFM指标:根据收集到的数据,计算每个客户的R、F、M指标值。这通常涉及对数据的分组、聚合和计算等操作。
  3. 客户分群与打分:将计算出的RFM指标值按照一定规则进行分群和打分。例如,可以将R、F、M指标值分别划分为不同的等级或区间,并为每个等级或区间分配相应的分数。然后,根据客户的RFM得分将其划分为不同的客户群体,如高价值客户、潜力客户、流失客户等。
  4. 制定营销策略:针对不同客户群体的特征和行为,制定差异化的营销策略和服务方案。例如,对于高价值客户可以提供个性化的服务和优惠;对于流失客户可以尝试通过优惠券等方式重新激活其购买欲望。

代码如下:

user_rfm =data.groupby(['user_id','ev_date']).agg(amount_sum=('amount','sum')).reset_index()
#data为原始数据集,我下面会给出
# amount为消费金额 ev_date为消费产生的时间
#思路就是 因RFM模型只与购买时间、购买次数、消费金额有关,user_id可作为统计购买次数之用 生成如下表格

user_rfm = user_rfm.groupby('user_id').agg(last_date=('ev_date','max')
                                           ,M=('amount_sum','sum')
                                           ,F=('ev_date','count')
                                          ).reset_index()

#计算F、M的值
#R为最后一次购买距今的时间 此处last_date=('ev_date','max') 计算的是最后一次产生购买行为的时间



user_rfm['R'] = user_rfm['last_date'].apply(lambda x:user_rfm['last_date'].max() - x)
#计算R 将最后一次产生购买行为的时间与数据表的截止时间插值填入R列



user_rfm = user_rfm[['user_id','R','F','M']]
#取'user_id','R','F','M' 四列重新生成一个DataFrame

user_rfm['R']=user_rfm['R'].dt.days
#将R列修改成时间格式



#生成如下数据表

定义RFM的打分标准:

R的打分:

[0-30]:5分
(30-60]:4分
(60-90]:3分
(90-120]:2分
120以上:1分


F的打分:

1次:1分
2次:2分
3次:3分
4次:4分
5次及以上:5分


M的打分:

[0-200]:1分
(200-500]:2分
(500-1000]:3分
(1000-2000]:4分
2000以上:5分

rfm_score = user_rfm.copy() #拷贝DataFrame作为操作对象

#根据以上的评分标准 以enumerate取出R列的对应的index与value 进行评分判断 下面的F、M也做同样操作
for i,j in enumerate(rfm_score['R']):
    if j <= 30:
        rfm_score['R'][i] = 5
    elif j <= 60:
        rfm_score['R'][i] = 4
    elif j <= 90:
        rfm_score['R'][i] = 3
    elif j <= 120:
        rfm_score['R'][i] = 2
    else :
        rfm_score['R'][i] = 1

for i,j in enumerate(rfm_score['F']):
    if j <= 1:
        rfm_score['F'][i] = 1
    elif j <= 2:
        rfm_score['F'][i] = 2
    elif j <= 3:
        rfm_score['F'][i] = 3
    elif j <= 4:
        rfm_score['F'][i] = 4
    else :
        rfm_score['F'][i] = 5

for i,j in enumerate(rfm_score['M']):
    if j <= 200:
        rfm_score['M'][i] = 1
    elif j <= 500:
        rfm_score['M'][i] = 2
    elif j <= 1000:
        rfm_score['M'][i] = 3
    elif j <= 2000:
        rfm_score['M'][i] = 4
    else :
        rfm_score['M'][i] = 5


rfm = pd.DataFrame()  #取一个空的DataFrame 
rfm['user_id'] = rfm_score['user_id']
#对RFM三列分别大于三列均值的数据标记为1,否则标记为0 以便后续做客户群体划分
rfm['R'] = rfm_score['R'].apply(lambda x: '1' if x >= rfm_score['R'].mean() else '0')
rfm['F'] = rfm_score['F'].apply(lambda x: '1' if x >= rfm_score['F'].mean() else '0')
rfm['M'] = rfm_score['M'].apply(lambda x: '1' if x >= rfm_score['M'].mean() else '0')


rfm['result'] = rfm['R'] + rfm['F'] + rfm['M'] 
#字符串拼接 会出现111、110、101、011、001、000 六类情形 每一种都对应以下一种客户群体

for i,j in enumerate(rfm['result']):
    if j == '111':
        rfm['result'][i] = '重要价值客户'
    elif j == '101':
        rfm['result'][i] = '重要发展客户'
    elif j == '011':
        rfm['result'][i] = '重要保持客户'
    elif j == '001':
        rfm['result'][i] = '重要挽留客户'
    elif j == '110':
        rfm['result'][i] = '一般价值客户'
    elif j == '100':
        rfm['result'][i] = '一般发展客户'
    elif j == '010':
        rfm['result'][i] = '一般保持客户'
    elif j == '000':
        rfm['result'][i] = '一般挽留客户'


rfm['result'].value_counts() #对客户群体做出分类统计

四、优点与局限性

  1. 优点

    • 直观易懂:RFM模型基于三个关键指标,直观易懂,容易计算和解释。
    • 高度客户化:RFM模型通过细分客户群体,可以根据不同群体的特征和行为设计针对性的策略和方案。
    • 易于实施和操作:RFM模型的计算方法简单,基于企业现有的交易数据,可以通过各种数据分析工具快速地实施和执行。
  2. 局限性

    • 只考虑历史行为而非未来潜力:RFM模型主要依据过去的交易数据进行分析,缺乏对客户未来行为和潜力的预测能力。
    • 客户分类不够细致:RFM模型通常将客户分为几个大类,没有对每类客户进行更细致的分类。
    • 忽略了某些关键客户行为:RFM模型主要关注交易金额、频次和时间等因素,忽略了其他关键客户行为,如网站访问量、社交媒体互动等。

总结

RFM模型是一种有效的客户价值分析模型,能够帮助企业实现客户细分和精准营销。然而,在应用过程中也需要注意其局限性,并结合其他客户分析工具和方法以提高客户洞察的准确性和有效性。

;