RFM案例
一、会员价值度模型
1、RFM模型介绍
-
会员价值度用来评估用户的价值情况,是区分会员价值的重要模型和参考依据,也是衡量不同营销效果的关键指标之一。
-
价值度模型一般基于交易行为产生,衡量的是有实体转化价值的行为。常用的价值度模型是RFM
-
RFM模型是根据会员
- 最近一次购买时间R(Recency)
- 购买频率F(Frequency)
- 购买金额M(Monetary)计算得出RFM得分
- 通过这3个维度来评估客户的订单活跃价值,常用来做客户分群或价值区分
- RFM模型基于一个固定时间点来做模型分析,不同时间计算的的RFM结果可能不一样
R | F | M | 用户类别 |
---|---|---|---|
高 | 高 | 高 | 重要价值用户 |
高 | 低 | 高 | 重要发展用户 |
低 | 高 | 高 | 重要保持用户 |
低 | 低 | 高 | 重要挽留用户 |
高 | 高 | 低 | 一般价值用户 |
高 | 低 | 低 | 一般发展用户 |
低 | 高 | 低 | 一般保持用户 |
低 | 低 | 低 | 一般挽留用户 |
2、RFM模型实现过程
设置截止时间节点:选择一个基准日期(如2024-05-01)作为计算Recency的参考点。
获取原始数据集:从会员数据库中提取过去一年内的订单数据,包括会员ID、订单时间和订单金额。
数据预处理:
- Recency:计算每个会员距离截止日期最近的订单时间。5
- Frequency:统计每个会员的订单总次数。5
- Monetary:计算每个会员的订单总金额。5
R、F、M 分区:
- 使用五分位法(1-5分)对R、F、M三个指标进行分区。
- Recency分数越小,得分越高(接近截止日期),Frequency和Monetary则相反。
计算RFM得分:
- 加权得分:根据业务需求赋予R、F、M不同权重并计算总分。
- 组合得分:将R、F、M得分拼接成一个字符串(如312、555)。
导出结果:将RFM得分保存为CSV文件,以便后续分析。
三大类:最优价值 中等价值 低质用户
二、代码实现
1、导入所需的库
import numpy as np
import pandas as pd
2、导入数据
# 导入数据
df_raw = pd.DataFrame(pd.read_excel('./sales.xlsx',index_col='USERID'))
3、缺失值处理
# 缺失值处理
sales_data = df_raw.dropna() # 丢失带有缺失值NA的行记录
sales_data = sales_data[sales_data['AMOUNTINFO'] > 1] # 丢弃订单金额<=1的记录
4、数据转换 (按用户ID去重归总)
# 数据转换 (按用户ID去重归总)
recency_value = sales_data['ORDERDATE'].groupby(sales_data.index).max() # 计算最近一次订单时间
frequency_value = sales_data['ORDERDATE'].groupby(sales_data.index).count() # 计算订单频率
monetary_value = sales_data['AMOUNTINFO'].groupby(sales_data.index).sum() # 计算订单总金额
5、分别计算 R, F, M 得分
# 分别计算 R, F, M 得分
deadline_date = pd.to_datetime("2024-05-01") # 指定一个时间节点,用来计算其他时间和该时间的距离
r_interval = (deadline_date - recency_value).dt.days # 计算 R 间隔
r_score = pd.cut(r_interval, 5, labels=[5, 4, 3, 2, 1]) # 计算 R 得分,五分位倒序
f_score = pd.cut(frequency_value, 5, labels=[1,