- 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、谁是最佳客户?
- 2、谁即将要成为流失客户?
- 3、谁将有潜力成为有价值的客户
- 4、哪些客户能够留存?
- 5、哪些客户会对目前的活动有所反应?
那么最终的问题是如何对客户进行分群,即如何建立客户的价值模型呢?
在传统企业和电商众多的客户细分模型中, RFM模型 是被广泛提到和使用的。
RFM模型是 衡量当前用户价值和客户潜在价值 的重要工具和手段。
1.1.1、RFM 模型介绍 RFM
是 Rencency
(最近一次消费),Frequency
(消费频率)、Monetary(消费金额) ,三个指标首字母组合,如下所示:
- 1、最近购买的时间越近,用户对产品促销互动越大
- R 越小越好
- 2、客户购买的频率越高,客户就品牌的满意度就越大
- F 越大越好
- 3、货币价值(购买金额)将高消费客户和低消费客户区分开来
- M 越大越好,区别高低消费用户
根据RFM模型(业务数据:订单数据,时间范围内订单数据),就可以统计在某一段时间内,用户最近的消费间隔,消费次数和消费金额,再根据使用 K-Means算法对用户进行聚类分群 (不仅仅可以局限于这三个数据字段,还可以根据业务需求,加入其他字段,进行调整模型):
- 按照memberId分组:
- R: max(finishtime),距离当前天数
- F:count(orderId)
- M: sum(orderAmt)
- 使用聚合函数:
- groupBy分组,max\count\sum函数聚合,其中使用日期处理函数
- 1)、
R(Recency)
表示客户最近一次购买的时间有多远 - 2)、
F(Frequency)
表示客户在最近一段时间内购买的次数 - 3)、
M (Monetary)
表示客户在最近一段时间内购买的金额。
在RFM
模式中,一般的分析型CRM着重在对于客户贡献度的分析,RFM
则强调以客户的行为来区分客户。
R:最近一次消费(recency)
消费指的是 客户在店铺消费最近一次和上一次的时间间隔 ,理论上R
值越小的客户是价值越高的客户,即对店铺的回购几次最有可能产生回应。
如下图,某零食网店用户最近一次消费R
值分布图:
F:消费频次(frequency)
消费频率是 客户在固定时间内的购买次数(一般是1年) 。但是如果实操中实际店铺由于受品类宽度的原因,比如卖3C产品,耐用品等即使是忠实粉丝用户也很难在1年内购买多次。所以,有些店铺在运营RFM
模型时,会把F值的时间范围去掉,替换成累计购买次数。
如下图,某零食网店用户购买频次图(如1个客户在1天内购买多笔订单,则自动合并为1笔订单):
M:消费金额(monetary)
M值是RFM模型中相对于R值和F值最难使用,但最具有价值的指标。大家熟知的“二八定律”(又名“帕雷托法则”)曾作出过这样的解释: 公司80%的收入来自于20%的用户 。
理论上M值和F值是一样的,都带有时间范围,指的是一段时间(通常是1年)内的消费金额,在实际项目中认为对于一般店铺的类目而言,产品的价格带都是比较单一的,比如:同一品牌美妆类,价格浮动范围基本在某个特定消费群的可接受范围内,加上单一品类购买频次不高,所以对于一般店铺而言,M值对客户细分的作用相对较弱。
现以国内某知名化妆品店铺举例,店铺平均客单为160元,因此以80元作为间隔,将累积消费金额分段,从表中可以很明显发现,累计消费160元以下用户占比为65.5%(近2/3),贡献的店铺收入比例只占31.6%(近1/3),具体如下:
有两种方法来分析RFM模型
的结果: - 用基于RFM模型的 划分标准 来进行客户细分 - 用基于RFM模型的 客户评分 来进行客户细分。
选择RFM
模型中的1-3个指标进行客户细分,如下表所示。切记细分指标需要在自己可操控的合理范围内,并非越多越好,一旦用户细分群组过多,一来会给自己的营销方案执行带来较大的难度,二来可能会遗漏用户群或者对同个用户造成多次打扰。
最终选择多少个指标有两个参考标准:店铺的客户基数,店铺的商品和客户结构。
1.2.2、目标用户 除了直接用RFM模型对用户进行分组之外,还有一种常见的方法是 利用RFM
模型的三个属性对客户进行打分,通过打分确定每个用户的质量,最终筛选出自己的目标用户 。
RFM模型评分主要有三个部分:
- 1、确定RFM三个指标的分段和每个分段的分值;
- 2、计算每个客户RFM三个指标的得分;
- 3、计算每个客户的总得分,并且根据总得分筛选出优质的客户
比如,实操的过程中一般每个指标分为3-5段,其中R值可以根据开店以来的时间和产品的回购周期来判定,F值根据现有店铺的平均购买频次,M值可参考上文客单价的分段指标。举个例子:
确认RFM
的分段和对应分段的分值之后,就可以按照用户情况对应进行打分。
如何依据RFM模型针对用户订单数据进行计算操作呢,具体分析如下所示:
1.2.3.1、RFM分析:R-F-M分别按照5、4、3、2、1进行赋值,分别给出R_Score、F_Score、M_Score :
按照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天
业务含义:客户价值分为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、模型开发思路