熱線電話:13121318867

登錄
首頁精彩閱讀R語言實現RMF模型
R語言實現RMF模型
2018-05-24
收藏

R語言實現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生成模擬隨機消費記錄數據??蛻艟幪枮?000-1999共100人,消費記錄10000條,消費記錄產生時間在2014-01-01到2015-12-29之間。

[plain] view plain copy

    sales <-data.frame(sample(1000:1999,replace=T,size=10000),abs(round(rnorm(10000,178,55)))+1)#隨機第一列產生用戶ID,第二列產生用戶消費數據  
    sales.dates<- as.Date("2014/1/1") + 728*sort(stats::runif(10000)) # runif(n,min = 0, max = 1)產生隨機數  
    sales<- cbind(sales,sales.dates)  
    names(sales)<- c("用戶ID","消費金額","消費時間")  
    str(sales)#查看data.frame的格式  

根據上述消費記錄,得到Recency、Frequency、Monetary的值。

[plain] view plain copy

    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之間。

[plain] view plain copy

    #均值劃分  
    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之間。

[plain] view plain copy

    #標準化后劃分  
    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  

以上用到的權重需要根據實際情況考量選定。得到的客戶評分rankRMF,是客戶細分的一個參考依據,實際場景中,我們可能還有客戶的其他數據,可以綜合來看。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢