R语言学习:RFM分析,rfm包
2022年第05周。
这一周R语言学习,记录如下。
正值除夕佳节,我祝福大家佳节快乐,身体健康,学习进步,万事顺意。
01
RFM分析
1.1 RFM简介
RFM分析一种通过检查过往交易数据以实现客户细分的技术。它从三个角度来观察:
-
1 客户最近多久购买?(活跃度)
-
2 客户购买频次是多少?(忠诚度)
-
3 客户购买花了多少钱?(贡献度)
RFM分析基于一个营销原则:80%的业务来自20%的客户(二八法则)。RFM通过将客户划分为不同的类别来帮助识别更有可能响应促销活动的客户。
1.2 RMF应用场景
RFM分析应用广泛,可以在电商、社交媒体、信贷服务、APPS等发挥积极作用。
如下图所示:
RFM分析的工作流程,如下图所示:
数据 –》 RFM 表格 –》 RFM 评分 –》 分群结果和应用。
1.3 交易数据
交易数据用于记录客户的订单数据,包括客户ID、客户姓名、订单成交日期、订单对应金额等核心要素,除此之外,还可以包括其它信息,比方说,订单所属类型,下单时间,支付时间等。一个简单的交易数据,如下图所示:
1.4 指标加工
针对历史交易数据,使用RFM分析,对数据进行指标加工,生成R、F和M指标。
如下图所示:
RECENCY指标
FREQUENCY指标
MONETARY指标
1.5 生成RFM评分
根据评分等级,利用分位数方法,确定对应的cut-off。
创建M-Score, F-Score和R-Score。
如下图所示:
M-Score:
F-Score:
R-Score:
根据指标的评分,生成RFM-Score。
RFM-Score = R-Score * 100 + F-Score * 10 + M-Score
最终结果如下图所示:
1.6 客群细分
基于业务知识和指标的评分,划分不同群体,一种可供参考的群体结果,如下图所示:
02
RFM分析举例
使用rfm包做RFM分析。
示例代码
# 加载R包
library(tidyverse)
library(lubridate)
library(rfm)
# 导入数据
# 使用rfm包自带的数据集
rfm_data_orders
rfm_data_orders %>%
glimpse
# 对历史交易数据生成RFM表格数据
analysis_date <- lubridate::as_date("2006-12-31", tz = "UTC")
rfm_result <- rfm_table_order(rfm_data_orders,
customer_id,
order_date,
revenue,
analysis_date)
rfm_result
# 客群细分
segment_names <-
c("Champions", "Loyal Customers", "Potential Loyalist",
"New Customers", "Promising", "Need Attention",
"About To Sleep", "At Risk", "Can't Lose Them",
"Hibernating", "Lost")
recency_lower <- c(4, 2, 3, 4, 3, 3, 2, 1, 1, 2, 1)
recency_upper <- c(5, 4, 5, 5, 4, 4, 3, 2, 1, 3, 1)
frequency_lower <- c(4, 3, 1, 1, 1, 3, 1, 2, 4, 2, 1)
frequency_upper <- c(5, 4, 3, 1, 1, 4, 2, 5, 5, 3, 1)
monetary_lower <- c(4, 4, 1, 1, 1, 3, 1, 2, 4, 2, 1)
monetary_upper <- c(5, 5, 3, 1, 1, 4, 2, 5, 5, 3, 1)
segments <- rfm_segment(rfm_result,
segment_names,
recency_lower,
recency_upper,
frequency_lower,
frequency_upper,
monetary_lower,
monetary_upper)
segments %>%
select(customer_id, segment, rfm_score)
# 客群分类的分布情况
segments %>%
count(segment) %>%
arrange(desc(n)) %>%
rename(Segment = segment, Count = n)
# 可视化分析
# RFM三个度量指标在各个客群下的中位数分布
rfm_plot_median_recency(segments)
rfm_plot_median_frequency(segments)
rfm_plot_median_monetary(segments)
rfm_bar_chart(rfm_result)
rfm_histograms(rfm_result)
可视化结果图
我创建了R语言群,你可以添加我的微信,备注:姓名-入群,我邀请你加入。
我是王路情,利用R语言做数据科学工作,工作内容主要包括数据清洗与准备、数据探索、数据分析、数据挖掘、数据可视化、数据报告、建模工作环境搭建、R语言做科研论文等。我可以提供R语言和数据科学的咨询与服务。欢迎你添加我的微信,加入我创建的R语言群,一起学习和使用R语言。
如果你想学习数据科学与人工智能,请关注下方公众号~
2021年R语言学习专辑:
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!