RFM模型浅析

16 篇文章 1 订阅

RFM模型在客户管理中常被用来衡量客户价值和客户创新能力,主要考量三个指标:最近一次消费-Recency、消费频率-Frequency、消费金额-Monetary。根据以上三个维度对客户做细分,假定每个维度划分五个等级,得到客户R值(1-5),F值(1-5),M值(1-5)。那么客户就被分作125个细分群,就可根据客户交易行为差异针对不同群体做不同推荐。或进一步针对不同业务场景,对R、F、M赋予不同权重Wr、Wf、Wm得到每个用户得分:W=Wr*R+Wf*F+Wm*M,根据最终得分W排序,再划分等级,采用不用的营销策略

分析的数据是累计一段时间内客户的消费记录,每笔记录至少需要客户名称、消费时间、消费金额三个要素。用R模拟生成随机消费记录数据,客户编号为1000-1999共100人,消费记录10000条,消费记录产生时间在2014-01-01到2015-12-29之间

sales<-data.frame(sample(1000:1999,replace=T,size=10000),abs(round(rnorm(10000,178,55)))+1)		#第一列随机产生用户ID,第二列产生用户消费数据
#runif(n,min=0, max=1)产生随机数,stats::是表明runif函数来自于stats
sales.dates<-as.Date("2014/1/1") + 728*sort(stats::runif(10000)) 
sales<-cbind(sales,sales.dates)  
names(sales)<-c("用户ID","消费金额","消费时间")  
str(sales)  

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

sales$距离时间<-round(as.numeric(difftime(Sys.Date(),sales[,3],units="days")))  
salesM<-aggregate(sales[,2],list(sales$用户ID),sum)		#总消费金额  
names(salesM)<-c("用户ID","Monetization")  
salesF<-aggregate(sales[,2],list(sales$用户ID),length)	#消费次数  
names(salesF)<-c("用户ID","Frequency")  
salesR<-aggregate(sales[,4],list(sales$用户ID),min)		#最近一次消费时间  
names(salesR)<-c("用户ID","Recency")  
test1<-merge(salesF,salesR,"用户ID")  
salesRFM<- merge(salesM,test1,"用户ID") 

每个维度划分成5个层次,做均值划分。并给R、F、M分别赋权重0.5,0.3,0.2来求客户最终得分,客户最终得分在1-5之间

#均值划分
salesRFM0<-salesRFM  
salesRFM0$rankR<-cut(salesRFM0$Recency,5,labels=F)  
salesRFM0$rankR<-6-salesRFM0$rankR						#rankR,5最近,1最远  
salesRFM0$rankF<-cut(salesRFM0$Frequency,5,labels=F)	#rankF,1最少,5最频繁  
salesRFM0$rankM<-cut(salesRFM0$Monetization,5,labels=F)	#rankM,1最少,5最多  
salesRFM0$rankRMF<- 0.5*rankR + 0.3*rankF + 0.2*rankM 

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

#标准化后划分  
salesRFM1<-salesRFM  
salesRFM1$rankR<-(salesRFM1$Recency-min(salesRFM1$Recency))/(max(salesRFM1$Recency)-min(salesRFM1$Recency))  
salesRFM1$rankR<-1-salesRFM1$rankR		#rankR,1是最近,0是最远  
salesRFM1$rankF<-(salesRFM1$Frequency-min(salesRFM1$Frequency))/(max(salesRFM1$Frequency)-min(salesRFM1$Frequency))		#rankF,0是最少,1是最频繁  
salesRFM1$rankM<-(salesRFM1$Monetization-min(salesRFM1$Monetization))/(max(salesRFM1$Monetization)-min(salesRFM1$Monetization))	#rankM,0是最少,1是最多  
salesRFM1$rankRMF<- 0.5*salesRFM1$rankR + 0.3*salesRFM1$rankF + 0.2*salesRFM1$rankM 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值