1. 程式人生 > >利用聚類分析航空公司客戶價值

利用聚類分析航空公司客戶價值

目標
客戶分類,比較分析不同類別客戶價值,制定相應的營銷策略

思路與流程
分析的目標是將航空公司客戶分類,屬於無監督學習,故採用聚類挖掘模型
確定模型之後,需要選擇相應的指標,這裡指標的選擇需結合業務來確定,能夠反映客戶的關鍵特徵
確定模型和指標之後,可能需要對資料進行一定的探索分析,預處理等,以適應挖掘的需要

資料抽取 - 資料探索分析 - 資料預處理 - 構建模型及模型應用

一、資料抽取

首先觀察一下原始資料的基本資訊

這裡寫圖片描述

這裡寫圖片描述

可以看出,原始資料大小為 (62988行, 44列),並且存在空值,存在不同的資料型別

二、資料探索分析

這裡著重分析資料的質量,特別是空值數量,極值的數量

這裡寫圖片描述

通過觀察可以看出,原始資料中存在票價為空值、票價為0、折扣率最小值為0、飛行公里數大於0的記錄。票價為空值的原因可能是乘客不存在登機記錄,其他資料可能是乘客乘坐0折機票或積分兌換造成

三、資料預處理

1 資料清洗

通過資料的探索分析發現數據中存在票價為空值、票價為0、折扣率最小值為0、飛行公里數大於0的記錄。由於這塊的資料所佔比重較小,故採用丟棄的處理辦法

01 刪除空值
02 僅保留票價不為0,或折扣率和總飛行公里數同時為0的記錄

這裡寫圖片描述

2 屬性規約

航空公司的客戶價值模型為LRFMC,即入會時間、距最近乘機月數、飛行次數,飛行里程,平均折扣。原始資料中與LRFMC指標相關的6個屬性為 FFP_DATE、 LOAD_TIME、 FLIGHT_COUNT、 avg_discount、 SEG_KM_SUM、 LAST_TO_END

我們需要在以上6個屬性的基礎之上,提取出LRFMC指標
L = LOAD_TIME - FFP_DATE (屬性需轉換為時間格式)
R = LAST_TO_END
F = FLIGHT_COUNT
M = SEG_KM_SUM
C = avg_discount

這裡寫圖片描述

3 資料變換

這裡資料變換的方法是標準差標準化。這樣做是因為挖掘模型為聚類模型,是基於距離的演算法。資料集中各屬性量綱不同,資料大小差別太大,若不處理會影響挖掘的效果

這裡寫圖片描述

下面是經過標準差標準化後的資料集

這裡寫圖片描述

至此,資料預處理完成,下一步進行資料探勘

四、構建模型及模型應用

1 客戶聚類
採用KMeans 聚類演算法對客戶資料進行客戶分群,分為5類
程式碼如下:

from sklearn.cluster import KMeans
model = KMeans(n_jobs = 4, n_clusters = 5)
model.fit(zs_d)

center_d = pd.concat([pd.Series(model.labels_).value_counts(), pd.DataFrame(model.cluster_centers_)], axis = 1)
center_d['客戶類別'] = ['客戶群1','客戶群2','客戶群3','客戶群4','客戶群5']
center_d.columns = ['計數'] + list(target_d.columns)+['客戶類別']
center_d = center_d[['客戶類別','計數','L','R','F','M','C']]

聚類結果如下:

這裡寫圖片描述

2 客戶價值分析
針對聚類結果,對各客戶群進行特徵的分析。這裡採用雷達圖,可以更為直觀的分析比較各個特徵

雷達圖程式碼如下:

from pyecharts import Radar

v1 = [list(radar_d.loc['客戶群1',:])]
v2 = [list(radar_d.loc['客戶群2',:])]
v3 = [list(radar_d.loc['客戶群3',:])]
v4 = [list(radar_d.loc['客戶群4',:])]
v5 = [list(radar_d.loc['客戶群5',:])]
c_schema= [{"name": "L", "max": 2.5, "min": -1},
           {"name": "R", "max": 2.5, "min": -1},
           {"name": "F", "max": 2.5, "min": -1},
           {"name": "M", "max": 2.5, "min": -1},
           {"name": "C", "max": 2.5, "min": -1}]

radar = Radar()
radar.config(c_schema=c_schema, shape='circle')
radar.add('客戶群1', v1, item_color="#ff0000", symbol=None)
radar.add('客戶群2', v2, item_color="#477725", symbol=None)
radar.add('客戶群3', v3, item_color="#66ff00", symbol=None)
radar.add('客戶群4', v4, item_color="#66ffff", symbol=None)
radar.add('客戶群5', v5, item_color="#FFFF00", symbol=None)
radar.show_config()
radar.render()

雷達圖顯示:

這裡寫圖片描述

各客戶群的優勢特徵和劣勢特徵比較

這裡寫圖片描述

客戶群1的優勢特徵為:L F M
客戶群2的優勢特徵為:R
客戶群3的優勢特徵為: 無
客戶群4的優勢特徵為:F M R L C
客戶群5的優勢特徵為:C F M

根據每個客戶群的特徵,定義5個等級的客戶類別:
01 重要保持客戶。F M R L C 均表現優勢,屬於高價值客戶。航空公司應將主要資源放在他們身上,提高他們的忠誠度和滿意度,延長此類客戶的高水平消費
02 重要發展客戶。此類客戶入會時間短,折扣率高,飛行次數和里程較高,屬於潛力股客戶。航空公司要促進此類客戶的消費
03 重要挽留客戶。此類客戶入會時間長,但最近沒有消費。航空公司應喚醒此類客戶,延長生命週期
04 一般與低價值客戶。 F M R L C 均表現弱勢

最後,將5個客戶群價值排名:
NO.1 客戶群4
NO.2 客戶群5
NO.3 客戶群1
NO.4 客戶群2
NO.5 客戶群3