1. 概述#
金融行業、零售行業、電信行業等經常要對用戶進行劃分,以標記不同的標籤,從而進行個性化的精準化營銷行為。RFM 模型,是以用戶的實際交易或消費或購買或充值等(以下統稱 “交易”)一系列行為數據作為基礎,從而進行用戶群體的劃分的,簡單而又具有實際價值。RFM 模型由三個指標組成,分別為:
- Recency:用戶最近一次交易時間的間隔。R 值越大,表示客戶交易發生的日期越久,反之則表示客戶交易發生的日期越近。
- Frequency:用戶在最近一段時間內交易的次數。F 值越大,表示客戶交易越頻繁,反之則表示客戶交易不夠活躍。
- Monetary:用戶在最近一段時間內交易的金額。M 值越大,表示客戶價值越高,反之則表示客戶價值越低。
可以看到這三個指標都是通過用戶的交易行為計算得出的,這些指標基本上代表了用戶是否活躍,購買能力,忠誠度等信息。而運營人員的目標是通過對每個用戶的 RFM 指標進行計算,將用戶群體劃分為不同的種類進行區分,以便運營人員進行分析和精準化營銷。參考圖 1 所示:
圖 1 用戶分類( 看到一張日文的描述得比較好的圖,就採用了,應該能夠看懂)
可以把 R、F、M 每個方向定義為:高、低,兩個方向,我們找出 R、F、M 的中值,R = 最近一次消費,高於中值就是高,低於中值就是低,這樣就是 2_2_2=8 種用戶分類,從而分析出高價值用戶,重點發展用戶,流失用戶等群體進行針對性營銷動作。制定運營策略既要結合各類用戶在產品中的占比,也要結合產品的實際業務邏輯。參考表 1 所示:
表 1 不同用戶分類的運營策略例
2. 實證分析#
2.1 數據預處理#
從 csv 文件(某電商某段期間的真實運營數據)獲取數據,包括用戶 ID,交易日期,交易金額等字段。數據概況如下:
- 特徵變量數:4(USERID、ORDERDATE、ORDERID、AMOUNTINFO)
- 數據記錄數:4442
- 是否有 NA 值:無
- (AMOUNTINFO)最大值:9188
- (AMOUNTINFO)最小值:0.01
對原始數據做缺失值處理和異常值處理。由於本次數據沒有缺失值,則不需要處理。(如有,可根據需要進行刪除或補充處理。)對於交易金額為 0.01 的交易金額數據,經確認為運營測試數據,做刪除處理。對交易日期(ORDERDATE)進行日期轉換,以便後續進行時間間隔的計算。
2.2 RFM 得分計算#
1、指定最近時間截點
由於數據中,最近的交易日期為 2018 年 12 月 5 日,則指定該日期為最近時間截點,所有時間間隔的計算都以該日期為參考點。
2、R、F、M 數值計算
以用戶 ID(USERID)為主鍵,分別對交易日期(ORDERDATE)求最大值、對交易日期(ORDERDATE)做計數統計、對交易金額(AMOUNTINFO)求和,結合上述 1 中得到的最近時間截點,得到 R、F、M 的數值。
對得到的 R、F、M 的數值使用分位法做區間劃分,一般分為 5 份。同時通過 labels 標籤指定區間標志。對 R 而言,數值越大,離最近時間截點越遠,其區間標志越小。F、M 則和 R 剛好相反。
經過計算後的 RFM 數據分布可參考圖 2、圖 3 所示:
圖 2 RFM - 散點圖分布
圖 3 RFM-3D 圖分布
從圖 2、圖 3 可知,該用戶群的早期客戶數較多,交易頻度集中在 50 以內,交易金額普遍不是很高。
2.3 權重計算#
一般來說,權重計算多採用層次分析法(AHP)。金融公司中常用於個人信用風險評級模型的開發,而零售行業中的借貸評級,也可以借鑒該方法。利用 AHP 方法,先通過兩兩比較確定各個因素的相對重要性,再通過求解相對重要性計算指標權重。指標權重需經過一致性檢驗,即隨機一次性比率指標 CR 越小越好(一般要求 CR<0.1)。專家評分矩陣可參考表 2 所示:
表 2 專家評分矩陣
最終確定權重為:[W_R 、W_F 、W_M] = [ 0.30、0.54、0.16 ](詳細的計算過程省略)由於本案例的指標只有 3 個,數量較少,不易混淆,所以也可以簡單地直接設定。
2.4 基於 RFM 區間標志 + 分類規則的用戶分類#
第一種的分類方法是利用 RFM 區間標志 + 分類規則的方法(宋天龍,2017),可參考表 1 所示。以 R 為例,其中 “RS 分布” 指 RS 的平均值,“高” 指高於平均值。F、M 雷同。其分類結果可參考圖 4 所示:
(图 4 基於方法一的分類結果)
從圖 4 可知,該用戶群主要由重要挽留用戶 + 一般挽留客戶組成,另外有少部分一般價值客戶和一般保持用戶,嚴重缺乏重要價值用戶和重要發展客戶。
2.5 基於 RFM 實際數值 + K-means 的用戶分類#
第二種方法是直接使用 RFM 的實際數值,結合 K-means 聚類方法進行分類,不使用 RFM 區間標籤。在使用該方法的時候,要注意:
- RFM 是否存在離散值,是否均勻分布
- RFM 為不同量綱,需要進行標準化處理
- K-means 聚類方法按照幾類進行分類
離散值和標準化處理可按照常規的處理辦法。離散值處理可使用 MAD 法,也可簡單地按照取對數的處理。標準化處理可用 z-score 方法。本案例中,只進行了標準化處理。至於按照幾類進行分類,可通過 elbow method(詳細可參考https://en.wikipedia.org/wi/Determining_the_number_of_clusters_in_a_data_set)方法,來推斷使用分類數,如圖 5 所示,取圖中曲線下降趨勢緩和的節點即可,即 k=4。
圖 5 elbow method
根據分類數 = 4 進行 K-means 聚類分析。由於此時的分類類別不再是固定的 8 類,所以我們可將客戶簡單的分為 k 類星級客戶。分類結果參考圖 6 所示:
圖 6 基於方法二的分類結果
此時的用戶分類只是簡單地將用戶進行分類,尚沒有體現不同分類用戶之間的區別。此時可取各分類的質心,並將其排名顯示,結合了排名的分類結果可參考圖 7 所示:
圖 7 基於方法二的分類 + 排名結果
可通過概率密度圖來查看各排名用戶類別的 RFM 分布情況(watermelon12138,2019),以 3 星會員為例,參考圖 8 所示:
圖 8 3 星會員的概率密度圖
由圖 8 可知,該類用戶訪問天數在 800 天前後,其交易頻率集中 20 附近,而其交易金額則分布較廣,從 15000 到 25000 不等。
2.6 兩種分類方法的比較#
從兩種不同的分類結果來看,雖然基本都是分為 4 類,但 4 類的分法各自不同。前者在分類規則上更容易按照運營人員的期望進行分類,後者更加注重利用機器學習的自動學習能力,把更多的任務交給 K-mean 聚類來完成。前者雖然也計算用戶的價值分數,但前者的分類並不依賴用戶價值分數,用戶價值分數僅僅只是參考;而後者通過 K-means 進行聚類,但無法進行用戶類別排名,用戶類別排名主要依賴於用戶價值分數及 RFM 權重。
本文的源代碼可參考筆者在 JoinQuant 的代碼分享:
https://www.joinquant.com/view/community/detail/dee9aa758086d5a37923300e6b288456
參考文獻:
- 宋天龍. 《Python 數據分析與數據化運營》
- HarveyLau.《RFM-Clustering》 https://github.com/HarveyLau/RFM-Clustering
- watermelon12138.《K-means 聚類算法、Pandas 繪製概率密度圖和 TSNE 展示聚類結果》https://blog.csdn.net/watermelon12138/article/details/86549474
- Wilame Lima Vallantin.《Apply RFM principles to cluster customers with K-Means》