數(shù)倉 | 如何使用RFM模型進行用戶分層
本文轉載自微信公眾號「大數(shù)據(jù)技術與數(shù)倉 」,作者西貝。轉載本文請聯(lián)系大數(shù)據(jù)技術與數(shù)倉 公眾號。
在適當、有效的商務智能環(huán)境中,數(shù)據(jù)分析的質量必須得到保障。而確保數(shù)據(jù)分析質量的第一步就是根據(jù)問題需求從海量數(shù)據(jù)中提煉出真正所需的數(shù)據(jù),因為這是發(fā)揮數(shù)據(jù)價值很重要的一個方面。通過數(shù)據(jù)的分析與可視化呈現(xiàn)可以更加直觀的提供數(shù)據(jù)背后的秘密,從而輔助業(yè)務決策,實現(xiàn)真正的數(shù)據(jù)賦能業(yè)務。本文主要介紹在用戶分層和用戶標簽中常常使用的一個模型——RFM模型。
基本概念
RFM模型是在客戶關系管理(CRM)中常用到的一個模型,RFM模型是衡量客戶價值和客戶創(chuàng)利能力的重要工具和手段。該模型通過一個客戶的近期購買行為、購買的總體頻率以及花了多少錢三項指標來描述該客戶的價值狀況。
RFM模型較為動態(tài)地層示了一個客戶的全部輪廓,這對個性化的溝通和服務提供了依據(jù),同時,如果與該客戶打交道的時間足夠長,也能夠較為精確地判斷該客戶的長期價值(甚至是終身價值),通過改善三項指標的狀況,從而為更多的營銷決策提供支持。
RFM由三要素構成,即R – Recency 最近一次活動,F(xiàn) – Frequency用戶活動頻率,M – Monetary 消費金額,每個要素都代表著用戶某種重要的行為特征。RFM衡量數(shù)據(jù)是分析用戶行為的重要指標,用戶活動頻率F和消費金額M代表了用戶終生價值,最近一次活動R則代表了用戶留存率以及用戶參與度。
在RFM模式中,包括三個關鍵的因素,分別為:
- R(Recency):表示客戶最近一次購買的時間有多遠,即最近的一次消費,消費時間越近的客戶價值越大
- F(Frequency):表示客戶在最近一段時間內購買的次數(shù),即消費頻率,經(jīng)常購買的用戶也就是熟客,價值肯定比偶爾來一次的客戶價值大
- M (Monetary):表示客戶在最近一段時間內購買的金額,即客戶的消費能力,通常以客戶單次的平均消費金額作為衡量指標,消費越多的用戶價值越大。
最近一次消費、消費頻率、消費金額是測算消費者價值最重要也是最容易的方法,這充分的表現(xiàn)了這三個指標對營銷活動的指導意義。而其中,最近一次消費是最有力的預測指標。
通過上面分析可以對客戶群體進行分類:
客戶類型與等級 | R | F | M | 客戶特征 |
---|---|---|---|---|
重要價值客戶 (A級/111) |
高(1) | 高(1) | 高(1) | 最近消費時間近、消費頻次和消費金額都很高 |
重要發(fā)展客戶 (A級/101) |
高(1) | 低(0) | 高(1) | 最近消費時間較近、消費金額高,但頻次不高,忠誠度不高,很有潛力的用戶,必須重點發(fā)展 |
重要保持客戶 (B級/011) |
低(0) | 高(1) | 高(1) | 最近消費時間交遠,消費金額和頻次都很高。 |
重要挽留客戶 (B級/001) |
低(0) | 低(0) | 高(1) | 最近消費時間較遠、消費頻次不高,但消費金額高的用戶,可能是將要流失或者已經(jīng)要流失的用戶,應當基于挽留措施。 |
一般價值客戶 (B級/110) |
高(1) | 高(1) | 低(0) | 最近消費時間近,頻率高,但消費金額低,需要提高其客單價。 |
一般發(fā)展客戶 (B級/100) |
高(1) | 低(0) | 低(0) | 最近消費時間較近、消費金額,頻次都不高。 |
一般保持客戶 (C級/010) |
低(0) | 高(1) | 低(0) | 最近消費時間較遠、消費頻次高,但金額不高。 |
一般挽留客戶 (C級/000) |
低(0) | 低(0) | 低(0) | 都很低 |
通過RFM模型能得到什么信息
- 誰是最佳用戶?
- 哪些用戶即將流失?
- 誰有潛力成為有價值用戶?
- 哪些用戶可以留存?
數(shù)據(jù)分析案例
- 效果圖
- 實現(xiàn)步驟
假設有如下的樣例數(shù)據(jù):
客戶名稱 | 日期 | 消費金額 | 消費數(shù)量 |
---|---|---|---|
上海****有限公司 | 2020-05-20 | 76802 | 2630 |
需要將數(shù)據(jù)集加工成如下格式:
具體SQL實現(xiàn)
- SELECT
- customer_name,-- 客戶名稱
- customer_avg_money,-- 當前客戶的平均消費金額
- customer_frequency, -- 當前客戶的消費頻次
- total_frequency,-- 所有客戶的總消費頻次
- total_avg_frequency, -- 所有客戶平均消費頻次
- customer_recency_diff, -- 當前客戶最近一次消費日期與當前日期差值
- total_recency, -- 所有客戶最近一次消費日期與當前日期差值的平均值
- monetary,-- 消費金額向量化
- frequency, -- 消費頻次向量化
- recency, -- 最近消費向量化
- rfm, -- rfm
- CASE
- WHEN rfm = "111" THEN "重要價值客戶"
- WHEN rfm = "101" THEN "重要發(fā)展客戶"
- WHEN rfm = "011" THEN "重要保持客戶"
- WHEN rfm = "001" THEN "重要挽留客戶"
- WHEN rfm = "110" THEN "一般價值客戶"
- WHEN rfm = "100" THEN "一般發(fā)展客戶"
- WHEN rfm = "010" THEN "一般保持客戶"
- WHEN rfm = "000" THEN "一般挽留客戶"
- END AS rfm_text
- FROM
- (SELECT
- customer_name,-- 客戶名稱
- customer_avg_money,-- 當前客戶的平均消費金額
- customer_frequency, -- 當前客戶的消費頻次
- total_avg_money ,-- 所有客戶的平均消費總額
- total_frequency,-- 所有客戶的總消費頻次
- total_frequency / count(*) over() AS total_avg_frequency, -- 所有客戶平均消費頻次
- customer_recency_diff, -- 當前客戶最近一次消費日期與當前日期差值
- avg(customer_recency_diff) over() AS total_recency, -- 所有客戶最近一次消費日期與當前日期差值的平均值
- if(customer_avg_money > total_avg_money,1,0) AS monetary, -- 消費金額向量化
- if(customer_frequency > total_frequency / count(*) over(),1,0) AS frequency, -- 消費頻次向量化
- if(customer_recency_diff > avg(customer_recency_diff) over(),0,1) AS recency, -- 最近消費向量化
- concat(if(customer_recency_diff > avg(customer_recency_diff) over(),0,1),if(customer_frequency > total_frequency / count(*) over(),1,0),if(customer_avg_money > total_avg_money,1,0)) AS rfm
- FROM
- (SELECT
- customer_name, -- 客戶名稱
- max(customer_avg_money) AS customer_avg_money , -- 當前客戶的平均消費金額
- max(customer_frequency) AS customer_frequency, -- 當前客戶的消費頻次
- max(total_avg_money) AS total_avg_money ,-- 所有客戶的平均消費總額
- max(total_frequency) AS total_frequency,-- 所有客戶的總消費頻次
- datediff(CURRENT_DATE,max(customer_recency)) AS customer_recency_diff -- 當前客戶最近一次消費日期與當前日期差值
- FROM
- (SELECT
- customer_name, -- 客戶名稱
- avg(money) over(partition BY customer_name) AS customer_avg_money, -- 當前客戶的平均消費金額
- count(amount) over(partition BY customer_name) AS customer_frequency, -- 當前客戶的消費頻次
- avg(money) over() AS total_avg_money,-- 所有客戶的平均消費總額
- count(amount) over() AS total_frequency, --所有客戶的總消費頻次
- max(sale_date) over(partition BY customer_name) AS customer_recency -- 當前客戶最近一次消費日期
- FROM customer_sales) t1
- GROUP BY customer_name)t2) t3
通過上面的分析,可以為相對應的客戶打上客戶特征標簽,這樣就可以針對某類客戶指定不同的營銷策略。
結論
- 如果一家公司「重要價值」的客戶不多,其他都是價值很低的「一般保持」客戶,表示客戶結構很不健康,無法承受客戶流失的風險。
- 「重要保持客戶」是指最近一次的消費時間離現(xiàn)在較久,但消費頻率和金額都很高的客戶,企業(yè)要主動和他們保持聯(lián)系。
- 「重要發(fā)展客戶」是最近一次消費時間較近、消費金額高,但頻率不高、忠誠度不高的潛力客戶。企業(yè)必須嚴格檢視每一次服務體驗,是否讓客戶非常滿意。
- 「重要挽留客戶」則是最近一次消費時間較遠、消費頻率不高,但消費金額高的用戶。企業(yè)要主動厘清久未光顧消費的原因,避免失去這群客戶。
要減少重要挽留客戶,促活重要保持客戶,挖掘重要發(fā)展客戶,才能產(chǎn)生源源不絕的重要價值客戶。
總結
營銷人員利用RFM分析能夠快速地將用戶細分成同類群組,并針對這些用戶采取不同的個性化營銷策略,從而提高用戶的參與度和留存率。值得注意的是,不同的行業(yè)的數(shù)據(jù)特點和用戶行為特點是不盡相同的,所以在實際的操作過過程中,會制定符合自己公司業(yè)務特點的RFM規(guī)則,但是基本的思路都是一致的。