未加星标

R语言构建RFM模型,挖掘潜在营销点推荐系统

字体大小 | |
[商业智能 所属分类 商业智能 | 发布者 店小二03 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

R语言构建RFM模型,挖掘潜在营销点推荐系统
管理
R语言构建RFM模型,挖掘潜在营销点推荐系统
模型
R语言构建RFM模型,挖掘潜在营销点推荐系统
R语言
R语言构建RFM模型,挖掘潜在营销点推荐系统
ggplot2
R语言构建RFM模型,挖掘潜在营销点推荐系统
plyr

RFM模型是市场营销和CRM客户管理中经常用到的探索性分析方法,透过模型深入挖掘客户行为背后的价值规律,进而更好地利用数据价值推动业务发展和客户管理。


RFM是三种客户行为的英文缩写:

R:Recency —— 客户最近一次交易时间的间隔。

F:Frequency—— 客户在最近一段时间内交易的次数。

M:Monetary —— 客户在最近一段时间内交易的金额。


R_S:基于最近一次交易日期计算得分,距离当前日期越近,则得分越高,否则得分越低;

F_S:基于交易频率计算得分,交易频率越高,则得分越高,否则得分越低;

M_S:基于交易金额得分,交易金额越高,则得分越高,反之得分越低。


同时为了对每个客户进行综合评价,也可将以上三个得分进行加权计算(权重规则可由专家制定或者营销人员自行根据业务决定,这里统一采用100:10:1)。


RFM = 100R_S + 10F_S + 1*M_S

RFM核心便是构建在R、F、M三个指标得分构成的立方体组合内,形成一个非常直观的客户价值矩阵。


最终通过对R_S、F_S、M_S三指标的得分组合,形成八种客户价值类型,营销人员可以通过以上组合形成的客户类群,针对性的进行活动营销,进而提升客户价值和营收水平。通过RFM分析识别优质客户,可以据此制定个性化沟通与营销服务,可以为营销决策提供更好地支持。



R语言构建RFM模型,挖掘潜在营销点推荐系统


01 数据准备

## !/user/bin/env RStudio 1.1.423

## -*- coding: utf-8 -*-

## RFM Model


#* 最近一次消费(Recency)

#* 消费频率(Frenquency)

#* 消费金额(Monetary)

Code Part


setwd('D:/R/File/')

library('magrittr')

library('dplyr')

library('scales')

library('ggplot2')

library("easyGgplot2")

library("Hmisc")

library('foreign')

library('lubridate')

mydata <- spss.get("trade.sav",datevars = '交易日期',reencode = 'GBK')

names(mydata) <- c('OrderID','UserID','PayDate','PayAmount')

start_time <- as.POSIXct("2017/01/01", format="%Y/%m/%d") %>% as.numeric()

end_time <- as.POSIXct("2017/12/31", format="%Y/%m/%d") %>% as.numeric()

set.seed(233333)

mydata$PayDate <- runif(nrow(mydata),start_time,end_time) %>% as.POSIXct(origin="1970-01-01") %>% as.Date()

mydata$interval <- difftime(max(mydata$PayDate),mydata$PayDate ,units="days") %>% round() %>% as.numeric()


按照用户ID聚合交易频次、交易总额及首次购买时间

salesRFM <- mydata %>% group_by(UserID) %>% summarise(Monetary = sum(PayAmount), Frequency = n(), Recency = min(interval))


02 计算得分

#分箱得分

salesRFM <- mutate( salesRFM, rankR = 6- cut(salesRFM$Recency,breaks = quantile(salesRFM$Recency, probs = seq(0, 1, 0.2),names = FALSE),include.lowest = TRUE,labels=F), rankF = cut(salesRFM$Frequency ,breaks = quantile(salesRFM$Frequency, probs = seq(0, 1, 0.2),names = FALSE),include.lowest = TRUE,labels=F), rankM = cut(salesRFM$Monetary ,breaks = quantile(salesRFM$Monetary, probs = seq(0, 1, 0.2),names = FALSE),include.lowest = TRUE,labels=F), rankRMF = 100*rankR + 10*rankF + 1*rankM)


#标准化得分(也是一种计算得分的方法)

salesRFM <- mutate(salesRFM, rankR1 = 1-rescale(salesRFM$Recency,to = c(0,1)), rankF1 = rescale(salesRFM$Frequency,to = c(0,1)), rankM1 = rescale(salesRFM$Monetary,to = c(0,1)), rankRMF1 = 0.5*rankR + 0.3*rankF + 0.2*rankM)


03 客户分类:

#对RFM分类:

salesRFM <- within(salesRFM,{R_S = ifelse(rankR > mean(rankR),2,1)

F_S = ifelse(rankF > mean(rankF),2,1)

M_S = ifelse(rankM > mean(rankM),2,1)})


#客户类型归类:

salesRFM <- within(salesRFM,{Custom = NA

Custom[R_S == 2 & F_S == 2 & M_S == 2] = '高价值客户' Custom[R_S == 1 & F_S == 2 & M_S == 2] = '重点保持客户' Custom[R_S == 2 & F_S == 1 & M_S == 2] = '重点发展客户' Custom[R_S == 1 & F_S == 1 & M_S == 2] = '重点挽留客户' Custom[R_S == 2 & F_S == 2 & M_S == 1] = '重点保护客户' Custom[R_S == 1 & F_S == 2 & M_S == 1] = '一般保护客户' Custom[R_S == 2 & F_S == 1 & M_S == 1] = '一般发展客户' Custom[R_S == 1 & F_S == 1 & M_S == 1] = '潜在客户'

})



R语言构建RFM模型,挖掘潜在营销点推荐系统

04 分析结果可视化:

4.1 查看RFM分箱后客户分布状况:

#RFM分箱计数

ggplot(salesRFM,aes(rankF)) + geom_bar()+ facet_grid(rankM~rankR) + theme_gray()


R语言构建RFM模型,挖掘潜在营销点推荐系统

4.2 RFM热力图:

#RFM heatmap

heatmap_data <- salesRFM %>% group_by(rankF,rankR) %>% dplyr::summarize(M_mean = mean(Monetary))

ggplot(heatmap_data,aes(rankF,rankR,fill =M_mean ))+geom_tile()

+ scale_fill_distiller(palette = 'RdYlGn',direction = 1)


R语言构建RFM模型,挖掘潜在营销点推荐系统

4.3 RFM直方图:

#RFM直方图

p1 <- ggplot(salesRFM,aes(Recency)) + geom_histogram(bins = 10,fill = '#362D4C')

p2 <- ggplot(salesRFM,aes(Frequency)) + geom_histogram(bins = 10,fill = '#362D4C')

p3 <- ggplot(salesRFM,aes(Monetary)) + geom_histogram(bins = 10,fill = '#362D4C')

ggplot2.multiplot(p1,p2,p3, cols=3)


R语言构建RFM模型,挖掘潜在营销点推荐系统

4.4 RFM两两交叉散点图:

#RFM 两两交叉散点图

p1 <- ggplot(salesRFM,aes(Monetary,Recency)) + geom_point(shape = 21,fill = '#362D4C' ,colour = 'white',size = 2)

p2 <- ggplot(salesRFM,aes(Monetary,Frequency)) + geom_point(shape = 21,fill = '#362D4C' ,colour = 'white',size = 2)

p3 <- ggplot(salesRFM,aes(Frequency,Recency)) + geom_point(shape = 21,fill = '#362D4C' ,colour = 'white',size = 2)

ggplot2.multiplot(p1,p2,p3, cols=1)


R语言构建RFM模型,挖掘潜在营销点推荐系统

R语言构建RFM模型,挖掘潜在营销点推荐系统

05 数据结果导出

#导出结果数据

write.csv(salesRFM,'salesRFM.csv')

RFM模型仅仅是一个前期的探索性分析,可以利用RFM模型输出的指标结果还可以进行其他分类以及降维模型的构建,深入探索客户数据价值,挖掘潜在营销点。


欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:418451831

tags: #160,salesRFM,lt,amp,gt,RFM,客户,得分,Monetary,Custom,Recency,library,Frequency,rankR,fill
分页:12
转载请注明
本文标题:R语言构建RFM模型,挖掘潜在营销点推荐系统
本站链接:http://www.codesec.net/view/576528.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 商业智能 | 评论(0) | 阅读(37)