跳到主要内容

RFM 模型

问题

什么是 RFM 模型?如何用 RFM 进行用户价值分层?

答案

RFM 三要素

RFM 是衡量用户交易价值的经典模型,由三个维度组成:

维度定义越高越好?
R(Recency)最近一次消费距今的天数越好(最近刚买过)
F(Frequency)一段时间内的消费次数越好
M(Monetary)一段时间内的消费金额越好

RFM 用户分层

每个维度用高/低二分,产生 23=82^3 = 8 种用户类型:

RFM用户类型运营策略
重要价值客户VIP 服务、专属权益
重要发展客户提频:刺激复购
一般价值客户提单价:推高客单
一般发展客户培养消费习惯
重要保持客户挽回:召回优惠
重要挽留客户紧急召回
一般保持客户低成本维护
流失客户放弃或低成本触达
R 的方向

注意 R 的含义是"最近一次消费距今天数"。R 值表示最近消费过,是"好"的信号。表中"高"指 R 值小(近期活跃),"低"指 R 值大(很久没买了)。

SQL 实现

RFM 计算与分层
WITH rfm_raw AS (
SELECT
user_id,
-- R: 最近消费距今天数(越小越好)
DATEDIFF(CURRENT_DATE, MAX(order_date)) AS recency,
-- F: 消费次数
COUNT(DISTINCT order_id) AS frequency,
-- M: 消费金额
SUM(amount) AS monetary
FROM orders
WHERE order_date >= DATE_SUB(CURRENT_DATE, INTERVAL 180 DAY)
AND status = 'paid'
GROUP BY user_id
),
rfm_score AS (
SELECT
user_id,
recency, frequency, monetary,
-- 用中位数作为阈值(也可用分位数或业务经验值)
CASE WHEN recency <= (SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY recency) FROM rfm_raw)
THEN 1 ELSE 0 END AS r_high,
CASE WHEN frequency >= (SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY frequency) FROM rfm_raw)
THEN 1 ELSE 0 END AS f_high,
CASE WHEN monetary >= (SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY monetary) FROM rfm_raw)
THEN 1 ELSE 0 END AS m_high
FROM rfm_raw
)
SELECT
user_id,
recency, frequency, monetary,
CASE
WHEN r_high = 1 AND f_high = 1 AND m_high = 1 THEN '重要价值客户'
WHEN r_high = 1 AND f_high = 0 AND m_high = 1 THEN '重要发展客户'
WHEN r_high = 1 AND f_high = 1 AND m_high = 0 THEN '一般价值客户'
WHEN r_high = 1 AND f_high = 0 AND m_high = 0 THEN '一般发展客户'
WHEN r_high = 0 AND f_high = 1 AND m_high = 1 THEN '重要保持客户'
WHEN r_high = 0 AND f_high = 0 AND m_high = 1 THEN '重要挽留客户'
WHEN r_high = 0 AND f_high = 1 AND m_high = 0 THEN '一般保持客户'
ELSE '流失客户'
END AS rfm_segment
FROM rfm_score;

RFM 评分法(进阶)

除了二分法,也可以给 R/F/M 各打 1~5 分,产生更精细的分层(最多 125 组):

RFM 五分评分
SELECT
user_id,
-- 用 NTILE 五等分
NTILE(5) OVER (ORDER BY recency DESC) AS r_score, -- recency 越小分越高
NTILE(5) OVER (ORDER BY frequency ASC) AS f_score,
NTILE(5) OVER (ORDER BY monetary ASC) AS m_score
FROM rfm_raw;

RFM 的局限

局限说明
只看交易行为未考虑浏览、收藏等非交易行为
阈值主观中位数 or 业务经验,结果差异较大
静态分层不能反映用户动态变化趋势
不适用低频一年买一次的业务(如汽车)F 没意义
替代方案
  • CLV(客户终身价值):更全面评估用户价值
  • 聚类分群:K-Means 让数据自动发现用户群体
  • RFM + 标签:RFM 基础上叠加用户标签(如偏好品类),做更精细运营

常见面试问题

Q1: 用 RFM 模型给用户分层后,运营策略怎么制定?

答案

核心原则:高价值用户花精力维护,低价值用户控制成本

用户类型策略具体动作
重要价值留住专属客服、VIP 权益、生日礼品
重要发展提频会员积分、复购优惠券
重要保持挽回召回短信、大额优惠券
流失用户放弃停止投入或仅低成本触达

Q2: RFM 的阈值怎么定?

答案(三种方式):

  1. 中位数:快速简单,但可能不贴合业务
  2. 分位数(如 20%/40%/60%/80%):更精细
  3. 业务规则:如 R≤7 天为"高",F≥3 次为"高"——需要和运营讨论

Q3: RFM 和 CLV 有什么关系?

答案

  • RFM现状快照:用户目前的价值等级
  • CLV未来预测:预计用户一生会带来多少价值
  • RFM 可以作为 CLV 预测模型的输入特征
  • CLV 更适合长周期、高 LTV 的业务(SaaS、保险)

相关链接