RMF客户消费行为评分模型

原创 2018年04月17日 15:51:37

RMF客户消费行为评分模型

RMF模型说明

RMF模型是客户管理中,常被用来衡量客户价值和客户创利能力的重要方法。它主要考量三个指标:

最近一次消费-Recency:近期购买的客户倾向于再度购买

消费频率-Frequency:经常购买的客户再次购买概率高

消费金额-Monetary:消费金额较多的客户再次消费可能性更大

根据上述三个维度,对客户做细分,假定每个维度划分成五个等级,得到客户的R值(1-5),F值(1-5),M值(1-5)。那么客户就被分作5*5*5 <- 125个细分群,我们可以根据客户交易行为的差异针对不同群体做不同的推荐。

或者进一步针对不同的业务场景,对R、F、M赋予不同权重Wr、Wf、Wm,得到每个用户的得分:W=Wr*R+Wf*F+Wm*M。根据最终得分W排序,再划分等级,采用不用的营销策略。

RFM模型其实很简单,其重点应该是在:一,如何做划分,不管是针对三个维度的划分还是三个维度取不同权重的和W的划分,都要依据实际业务场景情况确定。二,针对不同的客户群如何选定合适的营销手段,这个则需要对每个客户群体有正确的解读,并且对实际业务场景理解比较深入。

R语言实现RMF

用来做分析的数据应该是一段时间里累计的客户的消费记录,每笔记录至少需要客户名称、消费时间、消费金额三个要素。

用R生成模拟随机消费记录数据。客户编号为1000-1999共100人,消费记录10000条,消费记录产生时间在2014-01-01到2015-12-29之间。

观察数据结构:

> str(sales)
'data.frame':	10000 obs. of  4 variables:
 $ 用户ID  : int  1017 1583 1351 1013 1720 1938 1770 1319 1896 1067 ...
 $ 消费金额: num  157 201 228 199 302 173 131 218 191 232 ...
 $ 消费时间: Date, format: "2014-01-01" ...
 $ 距离时间: num  1565 1565 1565 1565 1565 ...
> head(sales)
  用户ID 消费金额   消费时间 距离时间
1   1017      157 2014-01-01     1565
2   1583      201 2014-01-01     1565
3   1351      228 2014-01-01     1565
4   1013      199 2014-01-01     1565
5   1720      302 2014-01-01     1565
6   1938      173 2014-01-01     1564

客户编号为1000-1999共100人,消费记录10000条,消费记录产生时间在2014-01-01到2015-12-29之间。

根据上述消费记录,得到Recency、Frequency、Monetary的值。

总消费金额:

sales$距离时间 <- round(as.numeric(difftime(Sys.Date(),sales[,3],units = "days")))    
names(salesM) <- c("用户ID","总消费")

消费次数:

salesF <- aggregate(sales[,2],list(sales$用户ID),length)
names(salesF) <- c("用户ID","消费次数")

最近一次消费时间:

saleR <- aggregate(sales[,4],list(sales$用户ID),min) 
names(salesR) <- c("用户ID","最近消费时间")

test1<- merge(salesF,salesR,"用户ID")  
salesRFM<- merge(salesM,test1,"用户ID") 
> head(salesRFM)
  用户ID 总消费 消费次数 最近消费时间
1   1000   1281        8          855
2   1001   1442        8         1019
3   1002    919        5          887
4   1003   1437        7          893
5   1004   1461        8          917
6   1005    964        7          970

根据上述说明,对三个维度每个维度划分为5个层次,做均值划分。并给R、F、M分别赋权重0.5,0.3,0.2来求客户最终得分,客户最终得分在1-5之间。

salesRFM0 <- salesRFM
salesRFM0$rankR <- cut(salesRFM$Recency,5,labels=F)
salesRFM0$最近消费时间 <- cut(salesRFM$Recency,5,labels=F)
salesRFM0$rankR <- cut(salesRFM$最近消费时间,5,labels=F)
salesRFM0$rankR <- 6- salesRFM0$rankR
salesRFM0$rankF <- cut(salesRFM0$消费次数,5,labels=F)
salesRFM0$rankM <- cut(salesRFM0$总消费,5,labels=F)
salesRFM0$rankRMF <- 0.5*rankR + 0.3*rankF+ 0.2*rankM
salesRFM0$rankRMF <- 0.5*salesRFM0$rankR+0.3*salesRFM0$rankF+0.2*salesRFM0$rankM

> head(salesRFM0)
  用户ID 总消费 消费次数 最近消费时间 rankR rankF
1   1000   1281        8          855     5     2
2   1001   1442        8         1019     4     2
3   1002    919        5          887     5     1
4   1003   1437        7          893     5     2
5   1004   1461        8          917     5     2
6   1005    964        7          970     4     2
  rankM rankRMF
1     2     3.5
2     2     3.0
3     1     3.0
4     2     3.5
5     2     3.5
6     1     2.8

对Receny、Frequency、Monetary标准化后,以权重权重0.5,0.3,0.2来求客户最终得分,客户最终得分在0-1之间。

> salesRFM1$rankF <- (salesRFM1$消费次数-min(salesRFM1$消费次数))/(max(salesRFM1$消费次数)-min(salesRFM1$消费次数))
> salesRFM1$rankM <- (salesRFM1$总消费)-min(salesRFM1$总消费))/(max(salesRFM1$总消费)-min(salesRFM1$总消费))
Error: unexpected ')' in "salesRFM1$rankM <- (salesRFM1$总消费)-min(salesRFM1$总消费))"
> salesRFM1$rankM <- (salesRFM1$总消费-min(salesRFM1$总消费))/(max(salesRFM1$总消费)-min(salesRFM1$总消费))
> salesRFM1$rankRMF <- 0.5*salesRFM1$rankR+03*salesRFM1$rankF+0.2*salesRFM1$rankM
> head(salesRFM1)
  用户ID 总消费 消费次数 最近消费时间     rankR
1   1000   1281        8          855 0.9649805
2   1001   1442        8         1019 0.6459144
3   1002    919        5          887 0.9027237
4   1003   1437        7          893 0.8910506
5   1004   1461        8          917 0.8443580
6   1005    964        7          970 0.7412451
      rankF     rankM   rankRMF
1 0.2777778 0.2621606 1.3682557
2 0.2777778 0.3076923 1.2178290
3 0.1111111 0.1597851 0.8166522
4 0.2222222 0.3062783 1.1734476
5 0.2777778 0.3130656 1.3181254
6 0.2222222 0.1725113 1.0717915
以上用到的权重需要根据实际情况考量选定。得到的客户评分rankRMF,是客户细分的一个参考依据,实际场景中,我们可能还有客户的其他数据,可以综合来看。


参考:

http://www.idatacamp.com/2015/10/09/r%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0rfm%E6%A8%A1%E5%9E%8B/


Maven+Struts2+Spring4+Hibernate4+Bootstrap客户关系系统视频

-
  • 1970年01月01日 08:00

RMF报表设计器

  • 2016年12月21日 16:15
  • 2.63MB
  • 下载

实现RFM模型的实际应用

  • 2017年11月13日 13:51
  • 841KB
  • 下载

R语言实现RMF模型

RMF模型说明 RMF模型是客户管理中,常被用来衡量客户价值和客户创利能力的重要方法。它主要考量三个指标: 最近一次消费-Recency:近期购买的客户倾向于再度购买 消费频率-Frequency:经...
  • cl1143015961
  • cl1143015961
  • 2015-12-29 17:06:15
  • 3858

rmf模型

rmf模型
  • u012459917
  • u012459917
  • 2014-11-08 16:03:56
  • 724

RFM分析介绍

在介绍RFM分析之前,我们先简单了解一下探索性分析。所谓探索性分析,主要是运用一些分析方法从大量的数据中发现未知且具有价值信息的过程。对于初步探索性分析而言,数据可视化是一个非常便捷、快速、有效的方法...
  • wanglingli95
  • wanglingli95
  • 2018-04-05 10:33:32
  • 47

RFM模型<em>分析</em>及原模型

RFM模型<em>分析</em>及原模型 2012-03-09 上传大小:2.2MB spssrfm RFM模型<em>分析</em>及原模型 综合评分:4 收藏(2)评论(3)举报 所需: 5积分/C币 下载个数: 72 开通VIP...
  • 2018年04月18日 00:00

RFM模型及R语言实现

一、基本概念 根据美国数据库营销研究所Arthur Hughes的研究,客户数据库中有三个神奇的要素,这三个要素构成了数据分析最好的指标:最近一次消费(Recency)、消费频率(Frequency...
  • sinat_26917383
  • sinat_26917383
  • 2016-02-14 13:54:21
  • 9011

如何在Python中实现RFM分析

RFM分析 RFM分析是根据客户活跃程度和交易金额贡献,进行客户价值细分的一种方法; 可以通过R,F,M三个维度,将客户划分为8种类型。 RFM分析过程 1.计算RFM各项分值 R...
  • lll1528238733
  • lll1528238733
  • 2017-07-14 15:33:13
  • 1938

RFM模型分析

会员的价值体现在持续不断的为企业带来稳定的销售和利润,同时也为企业策略的制定提供数据支持。所以零售企业总是想尽一切办法去吸引更多的人成为会员,并且尽可能提高他们的忠诚度。忠诚度高的顾客表现为经常光顾购...
  • bitcarmanlee
  • bitcarmanlee
  • 2016-04-11 17:13:37
  • 1805
收藏助手
不良信息举报
您举报文章:RMF客户消费行为评分模型
举报原因:
原因补充:

(最多只允许输入30个字)