01.05 機器學習實戰|航空公司客戶價值分析(python)

準確的客戶分類的結果是企業優化營銷資源的重要依據,本文利用了航空公司的部分數據,利用Kmeans聚類方法,對航空公司的客戶進行了分類,來識別出不同的客戶群體,從而對不同價值的客戶類別提供個性化服務,指定相應的營銷策略。

機器學習實戰|航空公司客戶價值分析(python)

一、分析方法和過程

1、數據抽取—> 2、數據探索與預處理—> 3、建模與應用

傳統的識別客戶價值應用最廣泛的模型主要通過3個指標(最近消費時間間隔(Recency)、消費頻率(Frequency)和消費金額(Monetary))來進行客戶細分,識別出價值高的客戶,簡稱RFC模型。

在RFC模型中,消費金額表示在一段時間內,客戶購買產品的總金額。但是不適用於航空公司的數據處理。因此我們用客戶在一段時間內的累計飛行里程M和客戶在一定時間內乘坐艙位的折扣係數C代表消費金額。再在模型中增加客戶關係長度L,所以我們用LRFMC模型。

因此本次數據挖掘的主要步驟:

  • 1)、從航空公司的數據源中進行選擇性抽取與新增數據抽取分別形成歷史數據和增量數據
  • 2)、對步驟1)中形成的兩個數據集進行數據探索分析和預處理,包括數據缺失值和異常值分析。即數據屬性的規約、清洗和變換
  • 3)、利用步驟2)中的處理的數據進行建模,利用Python下Sklearn庫中提供的KMeans方法,進行聚類
  • 4)、針對模型的結果進行分析。

二、數據處理

1、數據預覽

下面是本次試驗數據集的一部分截圖,數據集抽取2012-4-1到2014-3-31內乘客的數據,一個62988條數據。包括了會員卡號、入會時間、性別、年齡等44個屬性。

機器學習實戰|航空公司客戶價值分析(python)

2、數據探索分析

主要是對數據進行缺失值分析與異常值的分析。通過發現原始數據中存在票價為空值,票價最小值為0,折扣率最小值為0、總飛行公里數大於0的記錄。

其Python代碼如下:

import pandas as pd
datafile= '../data/air_data.csv' #航空原始數據,第一行為屬性標籤
resultfile = '../tmp/explore.xls' #數據探索結果表
data = pd.read_csv(datafile, encoding = 'utf-8') #讀取原始數據,指定UTF-8編碼
#數據探索
explore = data.describe(percentiles = [], include = 'all').T #包括對數據的基本描述,percentiles參數是指定計算多少的分位數表(如1/4分位數、中位數等);T是轉置,轉置後更方便查閱
explore['null'] = len(data)-explore['count'] #describe()函數自動計算非空值數,需要手動計算空值數
explore = explore[['null', 'max', 'min']]
explore.columns = [u'空值數', u'最大值', u'最小值'] #表頭重命名
'''這裡只選取部分探索結果。
describe()函數自動計算的字段有count(非空值數)、unique(唯一值數)、top(頻數最高者)、freq(最高頻數)、mean(平均值)、std(方差)、min(最小值)、50%(中位數)、max(最大值)'''
explore.to_excel(resultfile) #導出結果

#數據探索結束

上面代碼得到的探索結果:

機器學習實戰|航空公司客戶價值分析(python)

3、數據預處理

3.1 數據清洗

  • 1、丟棄票價為空的記錄。
  • 2、丟棄票價為0、平均折扣率不足0、總飛行公里數大於0的距離。

數據清洗的Python代碼如下:

 #數據清洗
cleanedfile = '../tmp/data_cleaned.xlsx' #數據清洗後保存的文件
zscoredata = '../data/zscoredata.xls' #標準化的數據文件;
data = data[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()] #票價非空值才保留
#只保留票價非零的,或者平均折扣率與總飛行公里數同時為0的記錄。
index1 = data['SUM_YR_1'] != 0
index2 = data['SUM_YR_2'] != 0
index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0) #該規則是“與”
data = data[index1 | index2 | index3] #該規則是“或”
data.to_excel(cleanedfile) #導出結果
#數據清洗結束

3.2屬性規約

選擇與LRFMC模型指標相關的6個屬性:FFP_DATE、LOAD_TIME、FLIGHT_COUNT、avg_discount、SEG_KM_SUM、LAST_TO_END。刪除不相關的屬性。

3.3數據變換

由於原始數據沒有直接給出LRFMC五個指標,需要自己計算,具體的計算方式為:

  • 1、L=LOAD_TIME-FFP_DATE;
  • 2、R=LAST_TO_END;
  • 3、F=FLIGHT_COUN
  • 4、 M=SEG_KM_SUM;
  • 5、C=avg_discount3.4 數據標準化
#數據規約及變換
data1=pd.DataFrame()
d = (pd.to_datetime(data['LOAD_TIME'])-pd.to_datetime(data['FFP_DATE'])).astype('timedelta64[D]')
data1['L']=d/30
data1[['R', 'F','M','C']]=data[['LAST_TO_END','FLIGHT_COUNT','SEG_KM_SUM','avg_discount']]
#數據規約及變換結束

3.4 數據標準化

Python代碼如下:

 #數據標準化
data2=pd.DataFrame()
data2=(data1-data1.mean(axis=0))/data1.std(axis=0)
data2.columns = ['Z'+i for i in data1.columns] # 表頭重命名
data2.to_excel(zscoredata,index=False) #導出結果
#數據標準化結束

數據標準化結果如下:

機器學習實戰|航空公司客戶價值分析(python)

四、建立模型

4.1客戶聚類

採用kMeans聚類算法對客戶數據進行客戶分組,聚成5組,Python代碼如下:

#建立模型
from sklearn.cluster import KMeans
k=5 #需要聚類類別數
kmodel = KMeans(n_clusters = k,max_iter=1000 )
kmodel.fit(data2) #訓練模型
#建立模型結束

#數據展示
kmodel.cluster_centers_ #查看聚類中心
kmodel.labels_ #查看個樣本對應的類別
showdata = '../data/show.xls' #展示的數據文件;
r1=pd.Series(kmodel.labels_).value_counts()
r2=pd.DataFrame(kmodel.cluster_centers_)
r3=pd.DataFrame(range(5))+1
r=pd.concat([r2,r1,r3],axis=1)
r.columns=list(data2.columns)+[u'類別數目']+[u'聚類類別']
r.to_excel(showdata,index=False) #導出結果
#數據展示結束

數據展示結果如下:

機器學習實戰|航空公司客戶價值分析(python)

4.2客戶價值分析

針對聚類結果進行特徵分析,數據展示雷達圖如下。其中第1類用戶群在R屬性上最大,在F和M屬性上最小;第2類用戶群在L和C屬性上最小;第3類用戶群在L屬性上最大;第4類用戶群在M和F屬性上最大,在R屬性上最小;第5類用戶群在C屬性上最大。

機器學習實戰|航空公司客戶價值分析(python)

結合業務分析,通過比較各個指標在群間的大小,對某一個群的特徵進行評價分析,得出客戶群特徵描述表。

機器學習實戰|航空公司客戶價值分析(python)

注:紅色正常字體為最大值,紅色斜體為次大值,綠色正常字體為最小值,綠色斜體為次小值

基於該特徵描述,將客戶類別分為5個等級:重要保持客戶、重要發展客戶、重要挽留客戶、一般客戶、低價值客戶。

重要保持客戶:平均折扣率(C)較高,最近乘坐本公司航班(R)低,乘坐次數(F)和里程(M)較高。

重要發展客戶:平均折扣率(C)較高,最近乘坐本公司航班(R)低,但乘坐次數(F)和里程(M)較低,入戶時間(L)較短。

重要挽留客戶:平均折扣率(C)較高,乘坐次數(F)和里程(M)較高,但最近乘坐本公司航班(R)高,乘坐頻率低。

一般客戶和低價值客戶:平均折扣率(C)較低,乘坐次數(F)和里程(M)較低,最近乘坐本公司航班(R)高,入會時間(L)短。

其中,重要保持客戶、重要發展客戶、重要挽留客戶這三類重要客戶可分別歸入客戶生命週期的發展期、穩定期、衰退期三個階段。

根據每種客戶類型特徵,對各類客戶群進行價值排名,結果如下:

機器學習實戰|航空公司客戶價值分析(python)

針對不同類型客戶群提供不同產品和服務,提升重要發展客戶價值、穩定和延長重要客戶的高水平消費、防範重要挽留客戶的流逝並積極進行關係恢復。


分享到:


相關文章: