模型概述
RFM模型是用來衡量當前客戶價值和潛在客戶價值的重要工具和手段赎瑰。RFM是指Recency(近度),F(xiàn)requency(頻度)婉称、Monetary(額度),三個指標首字母組合脐彩,如圖所示(圖1-1):
通過RFM分析將客戶群體劃分成高價值客戶、重點保持客戶姊扔、重點發(fā)展客戶惠奸、重點挽留客戶、一般價值客戶恰梢、一般保持客戶佛南、一般發(fā)展客戶、潛在客戶等八個級別嵌言,如圖所示(圖1-2):
分類客戶特點:
高價值客戶(高嗅回、高、高):最近消費時間較短摧茴、消費頻度和消費金額都較高绵载,這是需要重點關注和維護的客戶。
重點保持客戶(低苛白、高娃豹、高):最近消費時間較長,消費頻次和消費金額都較高购裙,說明這是個一段時間沒來的忠實客戶懂版,需要主動保持聯(lián)系。
重點發(fā)展客戶(高躏率、低躯畴、高):最近消費時間較短、消費金額高薇芝,但消費頻次較低蓬抄。忠誠度不高,但是消費能力強恩掷,是非常有潛力的客戶倡鲸,需要重點跟進。
重點挽留客戶(低黄娘、低、高):最近消費時間較長克滴、消費頻次不高逼争,但消費金額高的客戶,可能是將要流失或者已經要流失的客戶劝赔,應吸引客戶回流誓焦。
RFM模型的最終目的是為了在經營過程中區(qū)別出客戶類群,并在此基礎上針對不同類型客戶進行精準化營銷,進而提升客戶價值杂伟,實現(xiàn)企業(yè)利益最大化移层。
模型實現(xiàn)
1.數據準備
我生成了一份模擬數據,該數據集共有940條數據赫粥,包含ID(主鍵)观话、R(Recency)、F(Frequency)以及M(Monetary)越平,共4個字段频蛔。數據存儲在mysql數據庫中,需連接mysql并進行提取秦叛。代碼如下:
#導入庫
import pandas as pd
import numpy as np
import pymysql
from sklearn.cluster import KMeans
#連接數據庫并導出數據
conn= pymysql.connect(host='localhost',user='root',password='123456',
db='test',port=3306)
rfm_model = pd.read_sql("select * from consumption_data",con=conn)
conn.close()
#查看數據描述
rfm_model.describe()
#查看數據
frm_model.head()
數據如下圖所示(圖2-1):
數據描述性統(tǒng)計(圖2-2):
2.隨機選取中心點并生成分類標簽
# 調用KMeans算法,n_clusters參數表示劃分的類別數,
# random_state參數表示自由度
clf = KMeans(n_clusters=8,random_state=100)
# 對數據進行擬合晦溪,訓練出模型
clf.fit(rfm_model)
# 查看分類標簽(0-7,共8類)
clf.labels_
# 將標簽添加至數據
rfm_model['label']=clf.labels_
添加標簽后數據如下(圖2-3):
3.查看每類數據中心點挣跋,并得出8類分組RFM值的中位數
# 查看每類數據的中心點
# 每一行代表一個類別三圆,三列對應了R,F,M,
r = pd.DataFrame(clf.cluster_centers_,columns=['id','R','F','M'])
rmd = r['R'].median()
fmd = r['F'].median()
mmd = r['M'].median()
print(rmd,fmd,mmd)
每類數據中心點(圖2-4):
RFM值中位數(圖2-5):
4.把每個類中的RFM的值分別與剛剛得出的RFM的中位數的值進行比較避咆,并添加客戶分類屬性舟肉。
# 標識客戶類型
customer_type = []
for i in range(len(r)):
if r.iloc[i,1]> rmd and r.iloc[i,2]>=fmd and r.iloc[i,3]>=mmd:
customer_type.append('高價值客戶')
elif r.iloc[i,1]<rmd and r.iloc[i,2]>=fmd and r.iloc[i,3]>=mmd:
customer_type.append('重點保持客戶')
elif r.iloc[i,1]>=rmd and r.iloc[i,2]<fmd and r.iloc[i,3]>=mmd:
customer_type.append('重點發(fā)展客戶')
elif r.iloc[i,1]<rmd and r.iloc[i,2]<fmd and r.iloc[i,3]>=mmd:
customer_type.append('重點挽留客戶')
elif r.iloc[i,1]>=rmd and r.iloc[i,2]>=fmd and r.iloc[i,3]<mmd:
customer_type.append('一般價值客戶')
elif r.iloc[i,1]<rmd and r.iloc[i,2]>=fmd and r.iloc[i,3]<mmd:
customer_type.append('一般保持客戶')
elif r.iloc[i,1]>=rmd and r.iloc[i,2]<fmd and r.iloc[i,3]<mmd:
customer_type.append('一般發(fā)展客戶')
else:
customer_type.append('潛在客戶')
#添加標簽
r['客戶分類'] = customer_type
添加標簽后分類結果如下(圖2-6):
5.把分類結果與原數據進行合并
# 結果合并
right = pd.DataFrame(r['客戶分類'])
result=pd.merge(rfm_model,right,left_on='label',right_index=True)
result.sort_values(by='Id')
合并后結果如下(圖2-7):
6.客戶運營策略:
針對上述分類結果,我們可以對不同的客戶分類采取相應的營銷策略牌借,例如:
對于高價值客戶度气,我們需要重點保持關注,并對客戶進行長期維護與聯(lián)系膨报;
對于重點保持客戶磷籍,我們可以給予優(yōu)惠券或其他促銷活動,以吸引客戶回流现柠;
對于重點發(fā)展客戶院领,我們可以為客戶辦理會員卡以提升客戶消費頻次;
對于重點挽留客戶够吩,我們可以定時推送消息和給予優(yōu)惠券比然,以吸引客戶回流。
小結
消費近度周循、消費頻度强法、消費額度是衡量消費者價值最重要也是最容易的方法,這次的分析體現(xiàn)了這三個指標對營銷活動的參考意義湾笛,但是在實際工作中饮怯,涉及到的維度以及客戶的分類可能會更復雜,要針對不同公司嚎研、不同業(yè)務對RFM模型做出相應的調整蓖墅。