客户价值模型:RFM

article/2025/10/2 15:50:17

文章目录

    • 1.1、RFM 模型引入
      • 1.1.1、RFM 模型介绍
        • 1.1.1.1、一般情况下RFM模型可以说明下列几个事实:
        • 1.1.1.2、对最近一个月内所有用户订单数据进行统计RFM值:
      • 1.1.2、RFM 模型的三个指标:
        • 1.1.2.1、`R:最近一次消费(recency)`
        • 1.1.2.2、`F:消费频次(frequency)`
        • 1.1.2.3、`M:消费金额(monetary)`
    • 1.2、RFM 实践应用
      • 1.2.1、客户细分
      • 1.2.2、目标用户
      • 1.2.3、RFM 计算
        • 1.2.3.1、RFM分析:
        • 1.2.3.2、用户分层(聚类方法)
    • 1.3、新建标签
      • 1.3.1、新建 业务(4级)标签 : 客户价值标签
      • 1.3.2、新建 属性(5级)标签
      • 1.3.3、模型开发思路

在这里插入图片描述

1.1、RFM 模型引入

比如电商网站要做一次营销活动,需要针对不同价值的客户群体进行分群,对于 高价值的用户推荐手表、珠宝等高端商品,对于低价值用户推荐打折促销的廉价商品 ,当然还有以下这些问题都是需要考虑的:

  • 1、谁是最佳客户?
  • 2、谁即将要成为流失客户?
  • 3、谁将有潜力成为有价值的客户
  • 4、哪些客户能够留存?
  • 5、哪些客户会对目前的活动有所反应?

那么最终的问题是如何对客户进行分群,即如何建立客户的价值模型呢?

在传统企业和电商众多的客户细分模型中, RFM模型 是被广泛提到和使用的。

RFM模型是 衡量当前用户价值和客户潜在价值 的重要工具和手段。

1.1.1、RFM 模型介绍

  RFMRencency(最近一次消费),Frequency(消费频率)、Monetary(消费金额) ,三个指标首字母组合,如下所示:

在这里插入图片描述

1.1.1.1、一般情况下RFM模型可以说明下列几个事实:

  • 1、最近购买的时间越近,用户对产品促销互动越大
    • R 越小越好
  • 2、客户购买的频率越高,客户就品牌的满意度就越大
    • F 越大越好
  • 3、货币价值(购买金额)将高消费客户和低消费客户区分开来
    • M 越大越好,区别高低消费用户

  根据RFM模型(业务数据:订单数据,时间范围内订单数据),就可以统计在某一段时间内,用户最近的消费间隔,消费次数和消费金额,再根据使用 K-Means算法对用户进行聚类分群 (不仅仅可以局限于这三个数据字段,还可以根据业务需求,加入其他字段,进行调整模型):

在这里插入图片描述

1.1.1.2、对最近一个月内所有用户订单数据进行统计RFM值:

  • 按照memberId分组:
    • R: max(finishtime),距离当前天数
    • F:count(orderId)
    • M: sum(orderAmt)
  • 使用聚合函数:
    • groupBy分组,max\count\sum函数聚合,其中使用日期处理函数

1.1.2、RFM 模型的三个指标:

  • 1)、R(Recency)表示客户最近一次购买的时间有多远
  • 2)、F(Frequency)表示客户在最近一段时间内购买的次数
  • 3)、M (Monetary) 表示客户在最近一段时间内购买的金额。

RFM模式中,一般的分析型CRM着重在对于客户贡献度的分析,RFM则强调以客户的行为来区分客户。

1.1.2.1、R:最近一次消费(recency)

  消费指的是 客户在店铺消费最近一次和上一次的时间间隔 ,理论上R值越小的客户是价值越高的客户,即对店铺的回购几次最有可能产生回应。

如下图,某零食网店用户最近一次消费R值分布图:

在这里插入图片描述

1.1.2.2、F:消费频次(frequency)

  消费频率是 客户在固定时间内的购买次数(一般是1年) 。但是如果实操中实际店铺由于受品类宽度的原因,比如卖3C产品,耐用品等即使是忠实粉丝用户也很难在1年内购买多次。所以,有些店铺在运营RFM模型时,会把F值的时间范围去掉,替换成累计购买次数

如下图,某零食网店用户购买频次图(如1个客户在1天内购买多笔订单,则自动合并为1笔订单):

在这里插入图片描述

1.1.2.3、M:消费金额(monetary)

  M值是RFM模型中相对于R值和F值最难使用,但最具有价值的指标。大家熟知的“二八定律”(又名“帕雷托法则”)曾作出过这样的解释: 公司80%的收入来自于20%的用户 。

  理论上M值和F值是一样的,都带有时间范围,指的是一段时间(通常是1年)内的消费金额,在实际项目中认为对于一般店铺的类目而言,产品的价格带都是比较单一的,比如:同一品牌美妆类,价格浮动范围基本在某个特定消费群的可接受范围内,加上单一品类购买频次不高,所以对于一般店铺而言,M值对客户细分的作用相对较弱

现以国内某知名化妆品店铺举例,店铺平均客单为160元,因此以80元作为间隔,将累积消费金额分段,从表中可以很明显发现,累计消费160元以下用户占比为65.5%(近2/3),贡献的店铺收入比例只占31.6%(近1/3),具体如下:

在这里插入图片描述

1.2、RFM 实践应用

有两种方法来分析RFM模型的结果:
- 用基于RFM模型的 划分标准 来进行客户细分
- 用基于RFM模型的 客户评分 来进行客户细分

1.2.1、客户细分

  选择RFM模型中的1-3个指标进行客户细分,如下表所示。切记细分指标需要在自己可操控的合理范围内,并非越多越好,一旦用户细分群组过多,一来会给自己的营销方案执行带来较大的难度,二来可能会遗漏用户群或者对同个用户造成多次打扰。
在这里插入图片描述

最终选择多少个指标有两个参考标准:店铺的客户基数,店铺的商品和客户结构。

1.2.2、目标用户

  除了直接用RFM模型对用户进行分组之外,还有一种常见的方法是 利用RFM模型的三个属性对客户进行打分,通过打分确定每个用户的质量,最终筛选出自己的目标用户 。

RFM模型评分主要有三个部分:

  • 1、确定RFM三个指标的分段和每个分段的分值;
  • 2、计算每个客户RFM三个指标的得分;
  • 3、计算每个客户的总得分,并且根据总得分筛选出优质的客户

比如,实操的过程中一般每个指标分为3-5段,其中R值可以根据开店以来的时间和产品的回购周期来判定,F值根据现有店铺的平均购买频次,M值可参考上文客单价的分段指标。举个例子:

在这里插入图片描述

确认RFM的分段和对应分段的分值之后,就可以按照用户情况对应进行打分。

1.2.3、RFM 计算

如何依据RFM模型针对用户订单数据进行计算操作呢,具体分析如下所示:

1.2.3.1、RFM分析:

R-F-M分别按照5、4、3、2、1进行赋值,分别给出R_Score、F_Score、M_Score :

在这里插入图片描述

1.2.3.2、用户分层(聚类方法)

  按照R_Score、F_Score、M_Score进行 用户聚类 ,采用方法为K-Means,共分8类(具体分为几类,依据实际业务情况而定),并给RFM赋予权重(目前 权重采用R:F:M =0.25:0.25:0.5 ),计算各类的用户价值。

业务流程:

  • 1)、计算每个用户RFM值
  • 2)、按照规则给RFM打分
  • 3)、使用KMeans算法聚类分组,划分客户群体

1.3、新建标签

1.3.1、新建 业务(4级)标签 : 客户价值标签

标签名称:客户价值
标签分类:电商-某商城-商业属性
更新周期:1天
业务含义:客户价值分为5类(依据产品或业务需求划分)
标签规则:
inType=hbase
zkHosts=chb1
zkPort=2181
hbaseTable=tbl_tag_orders
family=detail
selectFieldNames=memberid,ordersn,orderamount,finishtime
程序入口:com.chb.tags.models.ml.RfmModel
算法名称:KMEANS
算法引擎:tags-model_2.11.jar
模型参数:--driver-memory 512m --executor-memory 512m --num-executors 1 --executor-cores 1

1.3.2、新建 属性(5级)标签

在这里插入图片描述

属性标签插入SQL语句:


INSERT INTO `tbl_basic_tag` VALUES ('362', '高价值', null, '0', null, '5', '361', '2019-12-07 17:12:24', '2019-12-07 17:12:24', null, null);
INSERT INTO `tbl_basic_tag` VALUES ('363', '中上价值', null, '1', null, '5','361', '2019-12-07 17:12:31', '2019-12-07 17:12:31', null, null);
INSERT INTO `tbl_basic_tag` VALUES ('364', '中价值', null, '2', null, '5','361', '2019-12-07 17:12:40', '2019-12-07 17:12:40', null, null);
INSERT INTO `tbl_basic_tag` VALUES ('365', '中下价值', null, '3', null, '5','361', '2019-12-07 17:12:48', '2019-12-07 17:12:48', null, null);
INSERT INTO `tbl_basic_tag` VALUES ('366', '超低价值', null, '4', null, '5','361', '2019-12-07 17:13:05', '2019-12-07 17:13:05', null, null);

1.3.3、模型开发思路


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

相关文章

RFM分析(Recency,Frequency,Monetary)

通过RFM方法,我们根据用户的属性数据分析,对用户进行了归类。在推送、转化等很多过程中,可以更加精准化,不至于出现用户反感的情景,更重要的是,对产品转化等商业价值也有很大的帮助。 应用背景:…

R语言 RFM分析

目录 一、RFM分析的定义: 二、RFM分析的假设 三、RFM分析的步骤 四、RMF分析实例 4.1 数据准备 4.2 计算R/F/M 4.3 将R、F、M分组打分赋值 4.4 计算RFM综合分值 4.5 客户分类 4.6 完整代码 注:个人学习笔记--谁说菜鸟不会数据分析 R语言篇 一、…

[数据分析] RFM分析方法

美图欣赏2022/06/08 RFM分析方法 作用:对用户分类,识别出有价值的用户,对不同价值的用户使用不同的运营决策,把公司有限的资源发挥到最大的效果(用于用户价值细分,精细化运营) RFM是3个指标的缩写:最近1次消费时间间隔(Recency)…

深入解读RFM模型-实战应用干货

今天想先谈谈传统企业和电商谈的较多的RFM模型,在众多的客户细分模型中,RFM模型是被广泛提到和使用的。 一、RFM模型概述 RFM模型是网点衡量当前用户价值和客户潜在价值的重要工具和手段。RFM是Rencency(最近一次消费)&#xff…

如何进行有效的RFM模型搭建和分析?

“ RFM分析,是用户精细化运营中比较常见的分析方法了。” 今天和大家分享一篇历史文章,内容做了微调。是数据分析中比较常用的一个分析框架:RFM分析。该模型用的很多,说明有模型自身的优势;但同时也存在很多的问题。今…

概念+实战讲解,一文带你了解RFM模型【kaggle项目实战分享】数据分析

大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦。 (有需…

三线性插值(三维线性插值)

三线性插值(trilinear interpolation)主要是用于在一个3D的立方体中,通过给定顶点的数值然后计算立方体中其他点的数值的线性插值方法。 具体推导过程见参考资料1,这里直接给出最终公式: 其中,坐标(x,y,z…

快速三线性插值

转载自https://lianera.github.io/post/2018/fast-trilinear-interpolation/ 快速三线性插值 最近需要对一个体素进行插值,并且应用到一张大图像上。这个本来用三线性插值很容易就实现了,但是体素的尺寸很小,长宽高大概20x15x10的大小&#x…

线性插值、双线性插值、双三次插值学习笔记-图像处理

缺失值之线性插值 interpolate用法 在series中有两个空值 用图的方式表示出四个点 使用线性插值后的结果如下 使用代码演示 线性插值后的结果 再加入一条数据 结果如下 使用pandas中的DataFrame 运行结果,默认在垂直方向上使用线性插值 设置水平方向上的线性插值 …

插值(Interpolation)

前言 插值计算普遍存在于图像处理中,最近在做畸变优化时,看了一些资料中提到了插值&双线性插值,开始没明白,觉得一定很难,直接跳过,到最终写代码时,又不得不使用.于是就这里对这个功能进行学习,记录,并使用vs2017进行实际验证,验证后发现这个原理其实并不复杂. 插值 插值…

三点线性插值

问题: 在三角形的三个顶点具有3个不同颜色,如何通过插值计算出三角形中每个点的颜色? 应用实例:高洛德着色使用3个顶点的颜色进行线性插值,结果如下图: 解决方案: 显然,无论是线性…

线性插值和双线性插值

最近在学数字图像处理中旋转变换的问题,发现旋转以后图片有一些不连续点,于是试着用双线性插值法进行解决。下面就介绍下插值的原理: 线性插值 如果你只处理分离的数据、想知道分离点之间的某些值,需要用到某种类型的插值。这种情况如图5-17坐标所示。对某些分离的(整数)…

没想到会用到:线性插值(Linear Interpolation)原理及使用

各位博友们大家好,小弟遇到一些问题经常会去看大家的博客,所以也想加入大伙的阵营,每每看到一些好的东西,有些心得体会什么的也想与大伙分享。 1.关于插值 插值,它根据已知的数据序列(也可以理解为坐标中一…

线性插值 多项式插值 样条插值 牛顿插值总结

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.什么是插值 在数值分析中,插值(interpolation)是一种通过已知的、离散的数据点,在范围内推求新数据点的过程…

常用线性插值的介绍和应用(双线性插值,三线性插值,平滑曲线插值)

常用线性插值的介绍和应用 线性插值 插值是计算机图形学中非常常用的技术。通常,数据是在常规网格上指定的(值写在2D或3D网格的顶点位置)或在线上(在一维的情况下),但是程序需要在该网格上的随机位置求值。…

线性插值 np.interp()

线性插值是指插值函数为一次多项式的插值方式,其在插值节点上的插值误差为零。线性插值相比其他插值方式,如抛物线插值,具有简单、方便的特点。线性插值的几何意义即为概述图中利用过A点和B点的直线来近似表示原函数。 线性插值法是认为现象…

我与插值萍水相逢:线性插值(Linear Interpolation)原理及使用

各位博友们大家好,小弟遇到一些问题经常会去看大家的博客,所以也想加入大伙的阵营,每每看到一些好的东西,有些心得体会什么的也想与大伙分享。 1.关于插值 插值,它根据已知的数据序列(也可以理解为坐标中一…

对线性插值的理解

【插值】 插值是用已知点求未知点的一种方法,而且通常是用两个已知点求一个未知点。(如果是用很多已知点求未知点一般用曲线拟合) 既然是用两个已知点求一个未知点,那么两个已知点之间的距离要尽可能的小,这样求出来…

python判断是否为数字类型_python判断字符串是否为数字

以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字:# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.…