rfm用户分层模型|原理+python全流程实现(代码片段)

二哥不像程序员 二哥不像程序员     2022-12-07     713

关键词:

RFM 模型

在数据分析中经常会进行用户分层,本文我们来了解一下常见的用户分层模型RFM。

RFM概念

RFM是由R(Recency)F (Frequency)M(Monetary) 三个维度构成的,其具体含义如下:

  • R:最近一次消费时间间隔

  • F:消费频率

  • M:消费金额

这里对于这三个维度的概念简单的做一个说明:

  • R:当前日期为3.25日,上一次消费日期3月20日,消费时间间隔为5天。
  • F:一年内去某商场消费100次,消费频率为100次。
  • M:一年内去某商场消费总额为1W元,消费金额为1W元。

RFM分层方式

一般情况下,在具体分层的时候,我们可以从RFM三个不同的维度进行高或低的评分,最终得到8种不同的结果(2*2*2=8),不同组合对应的分层类型如下表所示:

R(时间间隔)F(消费频率)M(消费金额)分层结果
重要价值用户
重要发展用户
重要保持用户
重要挽留用户
一般价值用户
一般发展用户
一般保持用户
一般挽留用户

根据结果我们不难看到RFM分层的内容主要是由不同维度评分的高低决定的,接下来我们再来拆解一下评分的高低是如何划分的。

对于评分首先我们要思考几个问题:

  1. 消费时间间隔越长评分应该高还是低?
  2. 消费频率越高评分应该是高还是低?
  3. 消费金额越大评分应该是高还是低?

弄清楚了这三个问题之后,我们再来思考评分是如何得到的。在进行RFM不同维度评分的时候根据不同的业务具有不同的业务评分表,示例如下所示(如何进行评分表的设计后文会说明):

打分消费间隔(R)(天)消费频率 (F) (次)消费金额(M) (元)
1[20,inf][0,2][0,1000]
2[11,20][3,5][1001,1500]
3[6,10][6,8][1501,3000]
4[4,5][9,16][3001,5000]
5[0,3][16,inf][5000,inf]

根据上表所示的评分表我们将所有用户的数据进行对照打分即可,示例如下:

用户ID消费间隔(R)消费频率(F)消费金额(M)R值打分F值打分M值打分
1526500415
23101700543
3272600533

得到了每个用户对应的打分之后,我们还需要有一个标准进行对照,超出这个标准的就记为高分,低于则记为低分即可,通常情况下我们会选择所有用户打分的均值作为对照标准,计算RFM三个维度评分的均值结果为:

  • R:4.67
  • F:2.67
  • M:3.67

接下来我们接可以讲上述对于每个用户的打分与这个标准进行对比,得到每个用户最终的RFM评分和结果:

用户IDRFM分层结果
1重要挽留用户
2一般价值用户
3一般价值用户

RFM评分表设计

当没有具体的业务规定时,我们可以使用如下的方法进行评分表的设计。

假设一共有10000个用户,用M(消费金额)维度举例,我们首先将所有人的消费金额进行排序,然后按照人数将整体等分成5个连续的区间,区间的评分分别对应[1,2,3,4,5]即可。

RFM策略

了解完了RFM的概念与分层方式,我们再来了解一下RFM分层后的实际应用,根据分层结果,通常我们会对重要的用户进行运营,策略如下:

  • 重要价值用户:保持长期联系与重点关注
  • 重要保持用户:发放小额优惠券,吸引用户回流
  • 重要发展客户:促导用户办理会员卡,积分卡
  • 重要挽留客户:发放大额优惠券,吸引用户回流

RFM分层Python实现

创建虚拟数据

import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings("ignore")

# 随机创建用户数据
df = pd.DataFrame(
    '用户ID': np.arange(1, 10001),
    '时间间隔': np.random.randint(1, 10, 10000),
    '消费频次': np.random.randint(1, 100, 10000),
    '消费金额': np.random.randint(1000, 10000, 10000),
)

构建评分规则区间

def score_list(data):
    re = list(data.values)
    re.sort()
    return re[2000:10000:2000]

r_score = score_list(df['时间间隔'])
f_score = score_list(df['消费频次'])
m_score = score_list(df['消费金额'])
  

根据评分规则进行打分

def func1(x, score):
    if x <= score[0]:
        return 1
    elif score[0] < x <= score[1]:
        return 2
    elif score[1] < x <= score[2]:
        return 3
    elif score[2] < x <= score[3]:
        return 4
    else:
        return 5


df['R'] = df['时间间隔'].apply(func1, score=r_score)
df['F'] = df['消费频次'].apply(func1, score=f_score)
df['M'] = df['消费金额'].apply(func1, score=m_score)

区分打分的高低

R_avg = df['R'].mean()
F_avg = df['F'].mean()
M_avg = df['M'].mean()

def score(x,avg):
    if x > avg:
        return 1
    else:
        return 0

df['R_S'] = df['R'].apply(score,avg=R_avg)
df['F_S'] = df['F'].apply(score,avg=F_avg)
df['M_S'] = df['M'].apply(score,avg=M_avg)

# R的逻辑和F/M相反,进行倒置
def rev_r(x):
    if x == 1:
        return 0
    else:
        return 1
df['R_S'] = df['R_S'].apply(rev_r)

进行RFM映射

def get_sum_value(series):
    return ''.join([str(i) for i in series.values.tolist()])


# 添加RFM字符串列
df['data_rfm'] = df[['R_S','F_S','M_S']].apply(get_sum_value, axis=1)

dic = 
    '111': '重要价值客户',
    '011': '重要保持客户',
    '001': '重要挽留客户',
    '101': '重要发展客户',
    '010': '一般保持客户',
    '110': '一般价值客户',
    '000': '一般挽留客户',
    '100': '一般发展客户'

# RFM字符串数据映射成对应类型文字
df['data_rfm_re'] = df['data_rfm'].map(dic)

结果示例如下

推荐收藏一文详解数据分析经典模型rfm(附python代码)(代码片段)

...析模式中,RFM模型是被广泛提到的,它的本质是用户分类。本文将用Python语言来讲解的RFM模型,将用户进行分类。喜欢记得收藏、关注、点赞。提供完整代码+技术交流。技术交流、代码 查看详情

波士顿矩阵|原理+python全流程实现(代码片段)

波士顿矩阵很多公司中都有着不同的产品或者是业务线,但是对于繁琐的业务来说通常我们希望根据业务的好坏进行合理的资源分配,对于这种“好坏”的判断,波士顿矩阵出现了。一、概念波士顿矩阵又称市场࿰... 查看详情

rfm模型学习(代码片段)

...同的营销策略。整个过程分为几个步骤:数据提取→用户RFM打分→根据打分给用户分类→针对不同的分类提供不同的营销方案针对业务主要有两个难点,分别在第二个步骤和第四个步骤。用户RFM 查看详情

rfm模型学习(代码片段)

...同的营销策略。整个过程分为几个步骤:数据提取→用户RFM打分→根据打分给用户分类→针对不同的分类提供不同的营销方案针对业务主要有两个难点,分别在第二个步骤和第四个步骤。用户RFM 查看详情

知识分享-商业数据分析业务全流程

...随机森林算法的商品评价情感分析大数据分析案例-用RFM模型对客户价值分析(聚类)大数据分析案例-对电信客户流失分析预警预测大数据分析案例-基于随机森林模型对北京房价进行预测大数据分析案例-基于RFM模型对电商客户价值... 查看详情

rfm模型与客户生命周期分析

...据1,数据源:http://www.tableauhome.com.cn/2,字段含义UseId:用户idclass1:所属类别1class2:所属类别2code:编号流水号产品描述会员创建日期销售日期销售金额3,分析环境:tableau三,提出问题1,用户购买各生命周期的占比,找出优质... 查看详情

python数据分析实战案例:基于电商销售数据的rfm模型构建(代码片段)

...各个地区分店的销售额5.3销售淡旺季分析5.4新老客户数5.5用户价值度RFM模型分析6.案例结论6.1结论依据6.2案例结论完整代码及交流1.背景随着电商的不断发展,网上购物变得越来越流行。更多电商平台崛起,对于 查看详情

数据挖掘基于rfm的精细化用户管理(代码片段)

1.摘要用户价值细分是了解用户价值度的重要途径,而销售型公司中对于订单交易尤为关注,因此基于订单交易的价值度模型将更适合运营需求。针对交易数据分析的常用模型是RFM模型,该模型不仅简单、容易理解... 查看详情

rfm模型与客户生命周期分析

...据1,数据源:http://www.tableauhome.com.cn/2,字段含义UseId:用户idclass1:所属类别1class2:所属类别2code:编号流水号产品描述会员创建日期销售日期销售金额3,分析环境:tableau三,提出问题1,用户购买各生命周期的占比,找出优质... 查看详情

aarrr(海盗模型)|原理+python可视化实现(代码片段)

AARRR模型对于大量的用户数据,我们通常要进行用户生命周期建设去理解和维护用户,这时就需要用到大名鼎鼎的AARRR模型了。一、AARRR概念AARRR模型因为其爆炸性的增长方式通常又被称为海盗模型,其本质由获客、激... 查看详情

一文搞定深度学习建模预测全流程(python)

...|泳鱼来源| 算法进阶本文详细地梳理及实现了深度学习模型构建及预测的全流程,代码示例基于python及神经网络库keras,通过设计一个深度神经网络模型做波士顿房价预测。主要依赖的Python库有:keras、scikit-learn、pand... 查看详情

数据分析实战项目3:rfm用户分群(代码片段)

目录1、RFM模型介绍2、Excel实际RFM划分案例3、RFM案例3.1数据加载和基本信息查看3.2数据预处理和RFM的初始值计算3.3RFM区间和划分和分值计算3.4RFM计算结果保存3.4.1保存到excel3.4.2保存到数据库3.5RFM计算结果可视化3.6结果分析(... 查看详情

网络tcp/ip基础(osi七层网络参考模型协议及原理)

目录一、网络分层二、七层参考模型功能介绍三、TCP/IP五层模型常见协议四、网络层协议介绍五、传输层协议介绍六、应用层协议介绍七、五层模型常见设备一、网络分层在网络中常用的分层模型有两种:OSI参考模型TCP/IP参... 查看详情

实战案例!使用python进行rfm客户价值分析!(代码片段)

...xff01;RFM建模是一种用于评估客户价值的营销分析技术。RFM模型基于三个因素:Recency:客户最近购买的情况Frequency:客户进行购买的频率MonetaryValue:顾客在购买上花了多少钱RFM模型提供了上述三个度量的数值。这... 查看详情

python数据分析实战案例:基于电商销售数据的rfm模型构建(代码片段)

...各个地区分店的销售额5.3销售淡旺季分析5.4新老客户数5.5用户价值度RFM模型分析6.案例结论6.1结论依据6.2案例结论完整代码及交流1.背景随着电商的不断发展,网上购物变得越来越流行。更多电商平台崛起,对于电商卖家... 查看详情

python数据分析实战案例:基于电商销售数据的rfm模型构建(代码片段)

...各个地区分店的销售额5.3销售淡旺季分析5.4新老客户数5.5用户价值度RFM模型分析6.案例结论6.1结论依据6.2案例结论完整代码及交流1.背景随着电商的不断发展,网上购物变得越来越流行。更多电商平台崛起,对于电商卖家... 查看详情

波士顿矩阵|原理+python全流程实现(代码片段)

波士顿矩阵很多公司中都有着不同的产品或者是业务线,但是对于繁琐的业务来说通常我们希望根据业务的好坏进行合理的资源分配,对于这种“好坏”的判断,波士顿矩阵出现了。一、概念波士顿矩阵又称市场࿰... 查看详情

深度学习建模预测全流程(python)!

本文详细地梳理及实现了深度学习模型构建及预测的全流程,代码示例基于python及神经网络库keras,通过设计一个深度神经网络模型做波士顿房价预测。主要依赖的Python库有:keras、scikit-learn、pandas、tensorflow(建... 查看详情