RFM用户分层模型|原理+Python全流程实现

article/2025/10/24 15:44:40

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 1elif score[0] < x <= score[1]:return 2elif score[1] < x <= score[2]:return 3elif score[2] < x <= score[3]:return 4else:return 5df['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 1else:return 0df['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 0else: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)

结果示例如下

在这里插入图片描述


http://chatgpt.dhexx.cn/article/dL306xAR.shtml

相关文章

用户增长——AARRR模型

AARRR模型是做用户分析的经典模型之一。它以完整的用户生命周期为线索&#xff0c;描述了用户使用产品需经历的五个环节&#xff0c;最终获取商业价值。什么是AARRR模型&#xff1f; AARRR是由五个单词的首字母组成&#xff0c;分别代表【获取、激活、留存、收入、传播】五个阶…

如何定义用户模型(persona)

一、什么是用户模型&#xff1f; Persona&#xff08;[pə:səunə]&#xff09;&#xff1a;(Persona是用户模型的的简称)是虚构出的一个用户用来代表一个用户群。一个persona可以比任何一个真实的个体都更有代表性。一个代表典型用户的persona的资料有性别、年纪、收入、地域…

用户漏斗模型

原创不易,麻烦点个关注,点个赞,谢谢各位。 漏斗模型是什么? 漏斗模型是一个看似简单的评判产品健康度的数据工具,简单来说,就是通过产品每一个设计步骤的数据反馈得出产品的运行情况,然后通过各阶段的具体分析改善产品的设计,提升产品的用户体验。 漏斗模型符合自然规…

用户分层之RFM模型

目录 一、简介二、模型三、应用 一、简介 RFM模型是衡量用户价值的模型&#xff0c;其中具体含义&#xff1a; Recency&#xff1a;最近一次消费时间间隔Frequency&#xff1a;消费频率&#xff0c;一段时间&#xff08;比如1年&#xff09;内的消费次数Monetary&#xff1a;…

Django数据库学习——定义用户模型(实例)

&#xff08;1&#xff09;创建一个应用&#xff0c;HelloWorld &#xff08;2&#xff09;新建models.py&#xff0c; 定义系统用户模型 from django.db import modelsclass sysuser(models.Model):usernamemodels.CharField(max_length20,uniqueTrue)passwordmodels.CharFie…

数据分析之RFM——用户模型分析(附案例数据和代码)

本文从RFM模型概念入手&#xff0c;结合实际案例&#xff0c;详解Python实现模型的每一步操作&#xff0c;并提供案例同款源数据&#xff0c;以供同学们知行合一。 看这篇文章前源数据长这样&#xff1a; 学完后只要敲一个回车&#xff0c;源数据就变成了这样&#xff1a; 是…

浅谈用户营销模型AIPL

进入互联网下半场&#xff0c;由于人口红利带来的流量越来越珍贵&#xff0c;作为C端厂商&#xff0c;获取流量的成本变的越来越高&#xff0c;如何经营好已有的流量变的关键。 在经营用户方面有个例子我觉得特别有意思&#xff0c;小时候东北家家都爱吃大酱&#xff0c;有一个…

django drf 初始化配置(mysql、跨域访问、默认用户模型)和用户模型重写,数据迁移,解决用户模型重写后无法创建超级用户的问题

drf 初始化配置 一、初始化项目(推荐方案一)二、创建app三、重写用户模型四、配置五、数据迁移&#xff08;把模型类转为数据库的表字段&#xff09;六、整体结构和介绍七、解决用户模型重写后无法创建超级用户的问题 一、初始化项目(推荐方案一) 方案一 方案二 django-admin…

用户画像中常用的用户模型

促销敏感度模型 1.对于租凭公司平台而言&#xff0c;全范围的促销投放和对所有用户发放优惠券之类的&#xff0c;的确可以得到不错的效果&#xff0c;比如2019年的春节&#xff0c;公司通过对所有老用户发放优惠券&#xff0c;成功争取到了1000多订单。但是如果想进一步提高销…

建立用户模型

最近我们也在实践基于行为数据快速、低成本构建用户画像的方法&#xff0c;欢迎各位共同探讨&#xff1a; 用户模型&#xff08;Persona&#xff09;是Alan Cooper在《About Face&#xff1a;交互设计精髓》2一书中提到的研究用户的系统化方法。它是产品经理、交互设计师了解用…

用户模型

1、用户模型 “不仅要知道用户当下在想什么&#xff0c;更要知道用户背后在想什么&#xff0c;以及用户正在经历着什么。” 传统用户模型构建方式 用户模型 &#xff1a;基于对用户的访谈和观察等研究结果建立&#xff0c;严谨可靠但费时&#xff1b; 临时用户模型 &#x…

浅谈用户建模

在电影《黑客帝国》里&#xff0c;人们生活在一个虚拟的世界中&#xff0c;每个人都只是一段程序&#xff0c;一个模型。当然&#xff0c;现在的科技还不具有这么大的能力。但在如今的互联网时代里&#xff0c;有很多网站、计算机都在试图去建立用户模型&#xff0c;理解个人的…

用户模型分析

一 什么是用户模型 用户模型是对业务目标群体真实特征及属性的勾勒&#xff0c;是真实用户的虚拟代表。 目的&#xff1a;尽量减少主观臆测&#xff0c;了解他们的真实需求&#xff0c;从而知道如何更好的为不同类型用户提供定制化服务。 二 两种构建用户模型的方法 类型 方…

八大数据分析模型之——用户模型(一)

在日常的数据分析中&#xff0c;我们常用的有8大模型&#xff08;用户模型、事件模型、漏斗分析模型、热图分析模型、自定义留存分析模型、粘性分析模型、全行为路径分析模型、用户分群模型&#xff09;&#xff0c;从今天起&#xff0c;我们每周二解读一个模型&#xff0c;本文…

html页面字体自适应屏幕大小,根据屏幕宽度适应font-size文字大小

html页面字体自适应屏幕大小&#xff0c;根据屏幕宽度适应font-size文字大小 js代码px单位改为rem js代码 <script TYPE"text/javascript"> var docEl document.documentElement; function setRemUnit () {var rem docEl.clientWidth / 19.2; // 可根据不…

如何让Html页面在不同的设备自适应布局

提示&#xff1a;本人第一次写博客&#xff0c;内容仅供参考&#xff0c;希望对看到这篇文章的人有所帮助 文章目录 前言一、什么是自适应布局&#xff1f;二、用什么方法 百分比布局三、呈现的效果四、总结 前言 团队在写项目中经常会遇到不同电脑的屏幕尺寸不一样&#xff0c…

css 自适应方法

1&#xff0c;css calc()方法 calc()能让你给元素的做计算&#xff0c;你可以给一个div元素&#xff0c;使用百分比、em、px和rem单位值计算出其宽度或者高度&#xff0c;比如说“width:calc(50% 2em)”&#xff0c;这样一来你就不用考虑元素DIV的宽度值到底是多少&#xff…

普通的html如何写自适应

首先&#xff0c;引入flexible.js //designWidth:设计稿的实际宽度值&#xff0c;需要根据实际设置 //maxWidth:制作稿的最大宽度值&#xff0c;需要根据实际设置 //这段js的最后面有两个参数记得要设置&#xff0c;一个为设计稿实际宽度&#xff0c;一个为制作稿最大宽度&…

如何实现响应式(自适应)网页

响应式网页 什么是响应式布局为什么会造成布局混乱META标签相对度量FLEX布局宽高设置媒体查询替换元素响应式框架 什么是响应式布局 响应式网页&#xff08;Responsive Web&#xff0c;RW&#xff09;又称自适应网页&#xff0c;是一种网页设计布局&#xff0c;可以根据访问媒…

基于html+css的自适应展示4

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…