導(dǎo)讀:學(xué)習(xí)隨筆,近期一直在研究關(guān)于用戶的數(shù)據(jù)分析產(chǎn)品,網(wǎng)上翻閱了諸多文集,想想還是自己落筆記錄下過程。該篇文章主要是針對(duì)RFM模型的介紹與實(shí)踐,在研究理論的同時(shí),亦學(xué)習(xí)鞏固下Python的能力。
RFM模型的概念和用途
名詞解釋
? R(Recency):消費(fèi)間隔,最近一次距離上次消費(fèi)的時(shí)間間隔
? F(Frequency):消費(fèi)頻次,一段時(shí)間(1個(gè)月/1年...)內(nèi)的消費(fèi)總次數(shù)
? M(Monetary):消費(fèi)金額,一段時(shí)間(1個(gè)月/1年...)內(nèi)的消費(fèi)總金額
RFM模型概念
??????RFM模型是用戶價(jià)值研究中的經(jīng)典模型,基于近度(Recency),頻度(Frequency)和額度(Monetory)這3個(gè)指標(biāo)對(duì)用戶進(jìn)行聚類,找出具有潛在價(jià)值的用戶, 從而輔助商業(yè)決策,提高營銷效率。RFM作為一種數(shù)據(jù)驅(qū)動(dòng)的客戶細(xì)分技術(shù),可幫助營銷人員做出更明智的戰(zhàn)略性決策,使?fàn)I銷人員能夠快速識(shí)別用戶并將其細(xì)分為同類群體,并針對(duì)性制定個(gè)性化的營銷策略,提高用戶的參與度和留存率。
??????RFM建模所需要的數(shù)據(jù)源是相對(duì)簡(jiǎn)單的,只用到了購買記錄中的時(shí)間和金額這兩個(gè)字段。我們基于交易數(shù)據(jù)中用戶的最后一次的購買時(shí)間,購買的次數(shù)以和頻率,以及平均/總消費(fèi)額對(duì)每個(gè)用戶計(jì)算了三個(gè)維度的標(biāo)準(zhǔn)分。然后我們對(duì)于三個(gè)維度賦予了不同的權(quán)重,再基于加權(quán)后的分值應(yīng)用K-Means進(jìn)行聚類,根據(jù)每種人群三個(gè)維度與平均值之間的高低關(guān)系,確定哪些是需要保持用戶,哪些是需要挽留的用戶,哪些是需要發(fā)展的用戶等。在將這些客戶圈出之后,便可以對(duì)不同客戶群使用不同針對(duì)性地營銷策略(引導(dǎo),喚醒等),提高復(fù)購率與轉(zhuǎn)化率。值得注意的是,三個(gè)維度的權(quán)重制定并沒有統(tǒng)一的標(biāo)準(zhǔn),比較通用的方法是用層次分析法(AHP),實(shí)際場(chǎng)景結(jié)合行業(yè)以及具體公司的特點(diǎn)進(jìn)行因地制宜、因人而異的優(yōu)化。
RFM模型用途
RFM因素:
? R值越高,顧客的有效期越近,對(duì)商家活動(dòng)的響應(yīng)越積極
? F值越高,顧客的消費(fèi)頻次越高,對(duì)商家的忠誠度就越高
? M值越高,顧客的消費(fèi)能力越高,對(duì)商家貢獻(xiàn)度就越高
? 想要提高復(fù)購率和留存率,需要時(shí)刻警惕R值
RFM分析:
? 誰是您最有價(jià)值的客戶?
? 導(dǎo)致客戶流失率增多的是哪些客戶?
? 誰有潛力成為有價(jià)值的客戶?
? 你的哪些客戶可以保留?
? 您哪些客戶最有可能對(duì)參與度活動(dòng)做出響應(yīng)?
? 誰是你不需要關(guān)注的無價(jià)值客戶?
? 針對(duì)哪些客戶制定哪種發(fā)展、保留、挽回策略?
??????通過RFM模型,可以幫助營銷人員實(shí)現(xiàn)客戶細(xì)分;衡量客戶價(jià)值和客戶利潤創(chuàng)收能力;識(shí)別優(yōu)質(zhì)客戶;指定個(gè)性化的溝通和營銷服務(wù);為更多的營銷決策提供有力支持。
基于RFM模型的實(shí)踐
實(shí)驗(yàn)數(shù)據(jù)
數(shù)據(jù)來源:某知名餐飲品牌2019年起注冊(cè)會(huì)員的消費(fèi)數(shù)據(jù)
樣本數(shù)據(jù):會(huì)員id、訂單id、消費(fèi)日期、消費(fèi)金額
數(shù)據(jù)總量:134683(其中會(huì)員數(shù)為62018)
數(shù)據(jù)示例(如下表所示):
| member_id | order_id | curr_date | pay |
|---|---|---|---|
| 912e64b3fdf945448505e6d4b8155 | 74b113d90174fc390bcb780a | 2020/10/6 | 58 |
| 981c4e0bd28a462d8953c01cbfe8 | 74b113d90175028fe17e5d4c | 2020/10/7 | 172 |
| 15321a29b03641f895119bd2f64f | 74b113d9017507d7c8881d41 | 2020/10/8 | 88 |
數(shù)據(jù)預(yù)處理
數(shù)據(jù)導(dǎo)入:使用python的pandas.read_csv導(dǎo)入樣本數(shù)據(jù)。
缺失值校驗(yàn):因數(shù)據(jù)為生產(chǎn)真實(shí)的交易數(shù)據(jù),質(zhì)量相對(duì)較高,缺失值較低。
data.isnull().any(axis=0) # 檢查每一列是否有缺失值
data.isnull().any(axis=1) # 檢查每一行是否有缺失值
極值校驗(yàn):第一份樣本數(shù)據(jù)獲取的用戶訂單實(shí)付金額,其中會(huì)存在優(yōu)惠或補(bǔ)差支付,同時(shí)因就餐人數(shù)不一致,產(chǎn)生的的訂單消費(fèi)也會(huì)存在較大的差異,造成極致波動(dòng)、標(biāo)準(zhǔn)差值較大,因此需對(duì)金額進(jìn)行處理,以人均消費(fèi)額替代訂單支付金額,可去掉10元以下、萬元以上的交易訂單。
print(data.describe())
獲取RFM值:使用 groupby獲取RFM值
# 計(jì)算原始最近一次訂單時(shí)間
r = date['curr_date'].groupby(date.index).max()
# 計(jì)算原始訂單頻率
f = date['order_id'].groupby(date.index).count()
# 計(jì)算原始訂單總金額
m =date['pay'].groupby(date.index).sum()
獲取RFM評(píng)分值:數(shù)據(jù)離散,pandas.cut
# 計(jì)算r得分 r_interval為當(dāng)前日期與R值的間隔天數(shù)
r_score = pd.cut(r_interval, 5, labels=[5, 4, 3, 2, 1])
# 計(jì)算f得分
f_score = pd.cut(f, 5, labels=[1, 2, 3, 4, 5])
# 計(jì)算m得分
m_score = pd.cut(m, 5, labels=[1, 2, 3, 4, 5])
#RFM離散分布區(qū)間
# R
[(11.878, 36.4] < (36.4, 60.8] < (60.8, 85.2] < (85.2, 109.6] <(109.6, 134.0]]
# F
[(0.921, 16.8] < (16.8, 32.6] < (32.6, 48.4] < (48.4, 64.2] <(64.2, 80.0]]
# M
[(-12.407, 2728.684] < (2728.684, 5456.138] < (5456.138, 8183.592] <
(8183.592, 10911.046] < (10911.046, 13638.5]]
實(shí)驗(yàn)數(shù)據(jù)RFM分值占比
data_pd.plot(kind='bar',grid = True,colormap='Blues_r',stacked=True)

說明:F、M分布不均勻,極值差異大,經(jīng)數(shù)據(jù)探查知曉該商戶開通了企業(yè)團(tuán)餐業(yè)務(wù),企業(yè)會(huì)給員工發(fā)放補(bǔ)貼,導(dǎo)致員工呈現(xiàn)較高的消費(fèi)頻次,該類用戶的消費(fèi)行為絕大程度依賴于企業(yè),在實(shí)際的RFM模型可踢出此類訂單,降低此類人群的分值,其次數(shù)據(jù)中的M值為客戶實(shí)付金額,該商戶支持預(yù)定、會(huì)餐、大小桌,同一單的消費(fèi)群體不同,或可使用人均消費(fèi)總額作為M值。
RFM數(shù)據(jù)合并,建立R、F、M數(shù)據(jù)框:pandas+numpy
# 將R,F,M三個(gè)維度組成列表
rfm_list = [r_interval, frequency_value, monetary_value, r_score, f_score, m_score]
# 設(shè)置R,F,M三個(gè)維度的列名
rfm_cols = ['R', 'F', 'M', 'r_score', 'f_score', 'm_score']
# 建立R,F,M數(shù)據(jù)框
rfm_pd = pd.DataFrame(np.array(rfm_list).transpose(), dtype=np.int32,
columns=rfm_cols, index=frequency_value.index)
基于RFM模型的用戶評(píng)分分層
計(jì)算RFM綜合分值:權(quán)重法
權(quán)重值主要賦值方法可分為主觀賦權(quán)法、客觀賦權(quán)法,如下:
?主觀賦權(quán)法:主要由專家經(jīng)驗(yàn)得到權(quán)數(shù),然后對(duì)指標(biāo)進(jìn)行綜合評(píng)價(jià)。是一種結(jié)合性方法,易操作,存在一定主觀性。常用方法:層次分析法AHP、權(quán)值因子判斷表法、德爾菲法、模糊分析法、二項(xiàng)系數(shù)法、環(huán)比評(píng)分法、最小平方法、序關(guān)系分析法等。
?客觀賦權(quán)法:依據(jù)歷史數(shù)據(jù)研究指標(biāo)之間的相關(guān)關(guān)系或指標(biāo)與評(píng)估結(jié)果的影響關(guān)系來綜合評(píng)價(jià)。這是定量研究,無須考慮決策者主觀意愿和業(yè)務(wù)經(jīng)驗(yàn),計(jì)算方法較為復(fù)雜。常用方法:主成分分析、因子分析、熵值法、變異系數(shù)法、均方差法、回歸分析法等。
因樣本數(shù)據(jù)分布不均勻,故手動(dòng)賦權(quán)重值,去除部分極值。
#加權(quán)得分:
rfm_pd['rfm_wscore'] = rfm_pd['r_score']*0.8 + rfm_pd['f_score']*0.1 + rfm_pd['m_score']*0.1
# 散點(diǎn)圖繪制
rfmm.plot.scatter('R','F',c=rfmm.rfm_wscore
,s=100*rfmm.rfm_wscore,cmap='viridis',alpha=0.3
,figsize=(15,8),fontsize=12)

結(jié)論:以近90天的消費(fèi)活躍來看,用戶消費(fèi)頻次集中在1-6次,呈現(xiàn)出極佳的復(fù)購率??梢葬槍?duì)消費(fèi)一次的人群進(jìn)行特征分析。比如針對(duì)人群的流動(dòng)性,若流動(dòng)人群占比較大,可進(jìn)一步推廣特色菜吸引客戶,若周邊人群占比較高,可基于復(fù)購人群的特征進(jìn)行分析,同時(shí)平臺(tái)可提供該類人群近期消費(fèi)偏好,供商家參考,制定針對(duì)性方案。
基于RFM的用戶價(jià)值分層
??????了解RFM定義后,將3個(gè)指標(biāo)作為坐標(biāo)系的XYZ坐標(biāo)軸,從空間上切割成8類,作為用戶的價(jià)值分層,如下圖:

用戶價(jià)值分層說明:

上面我們已經(jīng)計(jì)算得到各個(gè)用戶的RFM分值,接下來要依據(jù)分值進(jìn)行分類。
定義RFM 的分值等級(jí)
| 等級(jí) | 分值 |
|---|---|
| 高 | 均值以上,含均值 |
| 低 | 均值以下 |
使用pyecharts繪制玫瑰圖:
# 獲取等級(jí)匯總數(shù)據(jù)
tmp = rfm_model.groupby('Label of Customer').size()
# 匯總結(jié)果轉(zhuǎn)化列表
t = [list(z) for z in zip(tmp.index.values.tolist(), tmp.values.tolist())]
# 繪制餅圖
pie = (
Pie()
.add('',t,radius=['30%','75%'],rosetype='radius',
label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(title_opts=opts.TitleOpts(title='用戶價(jià)值分層',pos_left='center'),toolbox_opts=opts.ToolboxOpts(is_show=True), legend_opts=opts.LegendOpts(orient='vertical',pos_right='2%',pos_top='30%'))
.set_series_opts(label_opts=opts.LabelOpts(formatter=':u0z1t8os%'))
.render("用戶價(jià)值分層.html")
)

結(jié)論:商家顧客表現(xiàn)出來的忠誠度較高,但新客獲取能力較低。但是單純看分層占比,并沒有實(shí)際意義,可以基于價(jià)值分層與其他特征關(guān)聯(lián)分析進(jìn)行精準(zhǔn)投放。如下圖(網(wǎng)絡(luò)參考圖,本期實(shí)驗(yàn)并未涉及其他特征)所示:

基于RFM模型的場(chǎng)景應(yīng)用
基于RFM模型構(gòu)建用戶畫像
??????用戶畫像是基于用戶信息與行為衍生出來的特征屬性,用戶的準(zhǔn)入信息是用戶的主觀特征,是一種既定的事實(shí),通過對(duì)用戶行為的采集、研究,刻畫出單個(gè)用戶的特征。其意義在于基于某一事物對(duì)群里特征進(jìn)行分類,有效的體現(xiàn)事物的合適人群;同時(shí)針對(duì)群里特征的偏愛、習(xí)慣研究,可以刻畫出用戶的需求,實(shí)現(xiàn)精準(zhǔn)化營銷。

??????用戶畫像的基礎(chǔ)成分來源于用戶的準(zhǔn)入信息(會(huì)員注冊(cè)時(shí)的登記信息),更多的特征數(shù)據(jù)來源于用戶的各類行為,而RFM模型便是基于用戶消費(fèi)行為提煉出來的價(jià)值指標(biāo)。通過對(duì)各個(gè)價(jià)值分層的群體特征研究,可以有效提升獲客能力以及針對(duì)各類人群實(shí)現(xiàn)精準(zhǔn)化營銷。
基于RFM模型實(shí)現(xiàn)精準(zhǔn)營銷
??????市場(chǎng)和運(yùn)營往往絞盡腦汁做活動(dòng)、上新品、蹭熱點(diǎn)、做營銷,拓渠道,不斷開發(fā)客戶、做回訪維系客戶感情,除了少數(shù)運(yùn)氣好的之外,但大多效果寥寥,這是為何?
??????經(jīng)驗(yàn)豐富的營銷人員都知道“了解客戶”和“客戶細(xì)分”的重要性。營銷人員不僅要著眼于創(chuàng)造更多的訪問量和點(diǎn)擊量以提高客戶獲取,還必須遵循從提高點(diǎn)擊率(CTR)轉(zhuǎn)變?yōu)樘岣弑A?,忠誠度并建立客戶關(guān)系的新范式。與其將整個(gè)客戶群作為一個(gè)整體進(jìn)行分析,不如將其劃分為同類群體,了解每個(gè)群體的特征,并使他們參與相關(guān)的活動(dòng),而不是僅根據(jù)客戶年齡或地理位置進(jìn)行客戶細(xì)分。而RFM分析是市場(chǎng)營銷人員分析客戶行為的最流行、最簡(jiǎn)單、最有效的客戶細(xì)分方法之一。
針對(duì)RFM分層用戶制定相應(yīng)的營銷策略:
??????? 重要價(jià)值客戶是您的最佳客戶,他們是那些最新購買,最常購買,并且花費(fèi)最多的消費(fèi)者。提供VIP服務(wù)和個(gè)性化服務(wù),獎(jiǎng)勵(lì)這些客戶,他們可以成為新產(chǎn)品的早期采用者,并有助于提升您的品牌。
??????? 重要發(fā)展客戶:近期客戶,消費(fèi)金額高,但平均頻率不太高,忠誠度不高。提供會(huì)員或忠誠度計(jì)劃或推薦相關(guān)產(chǎn)品以實(shí)現(xiàn)向上銷售并幫助他們成為您的忠實(shí)擁護(hù)者和高價(jià)值客戶。
??????? 重要保持客戶:經(jīng)常購買、花費(fèi)巨大,但最近沒有購買的客戶。向他們發(fā)送個(gè)性化的重新激活活動(dòng)以重新連接,并提供續(xù)訂和有用的產(chǎn)品以鼓勵(lì)再次購買。
??????? 重要挽回客戶:曾經(jīng)光顧,消費(fèi)金額大,購買頻率低,但最近沒有光顧的顧客。設(shè)計(jì)召回策略,通過相關(guān)的促銷活動(dòng)或續(xù)訂帶回他們,并進(jìn)行調(diào)查以找出問題所在,避免將其輸給競(jìng)爭(zhēng)對(duì)手。
???????一般價(jià)值客戶:最近購買,消費(fèi)頻次高但消費(fèi)金額低的客戶,需要努力提高其客單價(jià),提供產(chǎn)品優(yōu)惠以吸引他們。
??????? 一般發(fā)展客戶:最近購買,但消費(fèi)金額和頻次都不高的客戶??商峁┟赓M(fèi)試用以提高客戶興趣,提高其對(duì)品牌的滿意度。
??????? 一般保持客戶:很久未購買,消費(fèi)頻次雖高但金額不高的客戶??梢蕴峁┓e分制,各種優(yōu)惠和打折服務(wù),改變宣傳方向和策略與他們重新聯(lián)系,而采用公平對(duì)待方式是最佳。
??????? 一般挽留客戶:RFM值都很低的客戶。針對(duì)這類客戶可以對(duì)其減少營銷和服務(wù)預(yù)算或直接放棄。
??????此外,目前的RFM分析中,一般給與M值更高的權(quán)重,如果一般挽留客戶與一般發(fā)展客戶占據(jù)多數(shù),說明公司的用戶結(jié)構(gòu)不是很合理,需要盡快采取措施進(jìn)行優(yōu)化。
作者申明:本文為作者學(xué)習(xí)隨筆,不做商業(yè)用途,作者有點(diǎn)懶,不習(xí)慣花時(shí)間組織語言,文中部分引用網(wǎng)絡(luò)專家用語。