航空公司客戶價值分析
1、了解航空公司現狀與客戶價值分析
- 1、行業內競爭
- 民航的競爭除了三大航空公司之間的競爭之外,還將加入新崛起的各類小型航空公司、民營航空公司,甚至國外航空巨頭。航空產品生產過剩,產品同質化特征愈加明顯,於是航空公司從價格、服務間的競爭逐漸轉向對客戶的競爭。
- 2、行業外競爭
- 隨着高鐵、動車等鐵路運輸的興建,航空公司收到巨大沖擊。
1.1、根據航空公司的數據特征進行下列說明:
1.2、結合目前航空公司的數據情況,可以實現以下目標:
- a、借助航空公司客戶數據,對客戶進行分群。
- b、對不同的客戶類別進行特征分析,比較不同類別客戶的客戶價值。
- c、對不同價值的客戶類別提供個性化服務,制定相應的營銷策略。
1.3、認識客戶價值分析
全球經濟環境和市場環境已經悄然改變,企業的業務逐步從以產品為主導轉向以客戶需 求為主導。一種全新的“以客戶為中心”的業務模式正在形成並被提升到前所未有的高度。 然而與客戶保持關系需要花費成本,企業所擁有的客戶中只有一部分能為企業帶來利潤。企 業的資源也是有限的,忽視高潛力的客戶而對所有客戶都提供同樣的服務,將使企業的資源 無法發揮其最大效用去創造最大化的利潤。任何企業要想生存和發展,都必須獲得利潤,追 求利潤最大化是企業生存和發展的宗旨之一。所以企業不可能也不應該和所有的客戶都保持 同樣的關系。客戶營銷戰略的倡導者 Jay& Adam Curry 從對國外數百家公司進行的客戶營銷 實施的經驗中提煉了如下經驗:
- a、公司收入的 80%來自頂端的 20%的客戶。
- b、20%的客戶其利潤率為 100%。
- c、90%以上的收入來自現有客戶。
- d、大部分的營銷預算經常被用在非現有客戶上。
- e、5%~30%的客戶在客戶金字塔中具有升級潛力。
- f、客戶金字塔中的客戶升級 2%,意味着銷售收入增加 10%,利潤增加 50。
眾多的企業管理者雖然知道客戶價值分析的重要性,但對如何進行客戶價值分析卻知之 甚少。如何全方位、多角度地考慮客戶價值因素,進行有效的客戶價值分析,這是擺在所有 企業面前需要認真思索的一個問題。
只有甄選出有價值的客戶並將精力集中在這些客戶身上, 才能有效地提升企業的競爭力,使企業獲得更大的發展。 在客戶價值分析領域,最具影響力並得到實證檢驗的理論與模型有客戶終生價值理論客 戶價值金字塔模型、策略評估矩陣分析法和 RFM 客戶價值分析模型等。本章將運用改進的客 戶價值 RFM 模型進行分析。
1.4、了解航空公司的客戶價值分析的步驟流程
1.5、客戶價值分析大概流程
- 1、抽取航空公司 2012 年 4 月 1 日至 2014 年
- 2、對抽取的數據進行數據清洗、特征構建和標准化等操作。
- 3、基於 RFM 模型,使用 K-Means 算法進行客戶分群
- 4、針對模型結果得到不同價值的客戶,采用不同的營銷手段,提供定制化的服務。
2、航空公司客戶數據處理
2.1、觀察數據
航空公司客戶原始數據存在少量的缺失值和異常值,需要清洗后才能用於分析。同時由 於原始數據的特征過多,不便直接用於客戶價值分析,因此需要對特征進行篩選,挑選出衡量客戶價值的關鍵特征。
2.2、數據如何處理?
- 處理數據缺失值與異常值
通過對 數據觀察 發現原始數據中存在票價為空值、票價最小值為 0、折扣率最小值為 0 總飛行千米數大於 0 的記錄。票價為空值的數據可能是由於不存在乘機記錄造成的。其他的 數據可能是由於客戶乘坐 0 折機票或者積分兌換造成的。由於原始數據量大,這類數所占比 例較小,對問題影響不大,因此對其進行丟棄處理。具體處理方法如下:
- a、丟棄票價為空的記錄。
- b、丟棄票價為 0、平均折扣率不為 0、總飛行千米數大於 0
# 導入工具包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 加載數據
def load_data():
air_data = pd.read_csv('../datas/air_data.csv',encoding = 'ansi')
return air_data
# 數據處理
def deal_data(air_data):
airline_data = pd.read_csv("../datas/air_data.csv",
encoding="gb18030") # 導入航空數據
print('原始數據的形狀為:', airline_data.shape)
## 去除票價為空的記錄
# exp1與exp2都為True的數據項,exp置為True
# 信號值 :exp1、exp2、exp
exp1 = airline_data["SUM_YR_1"].notnull()
exp2 = airline_data["SUM_YR_2"].notnull()
exp = exp1 & exp2
airline_notnull = airline_data.loc[exp, :]
print('刪除缺失記錄后數據的形狀為:', airline_notnull.shape)
# 只保留票價非零的,或者平均折扣率不為0且總飛行公里數大於0的記錄。
index1 = airline_notnull['SUM_YR_1'] != 0
index2 = airline_notnull['SUM_YR_2'] != 0
index3 = (airline_notnull['SEG_KM_SUM'] > 0) & (airline_notnull['avg_discount'] != 0)
airline = airline_notnull[(index1 | index2) & index3]
print('刪除異常記錄后數據的形狀為:', airline.shape)
#
# 選取需求特征
airline_selection = airline[["FFP_DATE", "LOAD_TIME",
"FLIGHT_COUNT", "LAST_TO_END",
"avg_discount", "SEG_KM_SUM"]]
# 構建L特征
L = pd.to_datetime(airline_selection["LOAD_TIME"]) - pd.to_datetime(airline_selection["FFP_DATE"])
L = L.astype("str").str.split().str[0] # 去除數據中的days字符,只輸出數字,再轉化為數值型數據
L = L.astype("int") / 30
## 合並特征
airline_features = pd.concat([L,
airline_selection.iloc[:, 2:]], axis=1)
print('構建的LRFMC特征前5行為:\n', airline_features.head())
# .preprocessing 預處理與歸一化 數據
from sklearn.preprocessing import StandardScaler
data = StandardScaler().fit_transform(airline_features)
np.savez('../datas/airline_scale_test1.npz', data)
print('標准化后LRFMC五個特征為:\n', data[:5, :])
return data
(2)、航空客戶價值分析的 LRFMC 模型--構建LRFMC特征
提取特征值是有一列:L --->會員入會時間和窗口結束之間的月數
- 轉化為時間數據,時間相減,就可以構建 L 列特征值
# 選取需求特征
airline_selection = airline[["FFP_DATE", "LOAD_TIME",
"FLIGHT_COUNT", "LAST_TO_END",
"avg_discount", "SEG_KM_SUM"]]
# 構建L特征
L = pd.to_datetime(airline_selection["LOAD_TIME"]) - pd.to_datetime(airline_selection["FFP_DATE"])
L = L.astype("str").str.split().str[0] # 去除數據中的days字符,只輸出數字,再轉化為數值型數據
L = L.astype("int") / 30
## 合並特征
airline_features = pd.concat([L,
airline_selection.iloc[:, 2:]], axis=1)
print('構建的LRFMC特征前5行為:\n', airline_features.head())
(3)、標准化數據----->標准差標准化數據
# .preprocessing 預處理與歸一化 數據
from sklearn.preprocessing import StandardScaler
data = StandardScaler().fit_transform(airline_features)
np.savez('../datas/airline_scale_test1.npz', data)
print('標准化后LRFMC五個特征為:\n', data[:5, :])
return data# 返回處理好的特征值數據框
3、K-Means————算法預測
- 實例化對象
- 訓練數據
- 預測
- 獲取聚類后的最終簇的類別及個數
# 5、算法預測K-Means
# 1、實例化對象
#n_clusters = 5指的是分為五個簇
km = KMeans(n_clusters = 5,init = 'k-means++')
# 2、訓練數據
km.fit(air_data)
# 3、預測
y_pre = km.predict(air_data)
# 4、獲取最終的聚類中心
centers = km.cluster_centers_
print('y_pre:\n', y_pre) # 輸出預測值
print('centers:\n', centers)
4、繪制雷達圖
def show_plt(data):
"""
繪制雷達圖,來展示結果
:param centers: 各個類別的聚類中心
:return: None
"""
# 1、創建畫布
plt.figure()
# 支持中文,支持負號:
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#繪制雷達圖
datalength = data.shape[1]
# 構建角度
# 從0~2π生成五個代表 特征值 的角度
angle = np.linspace(0,2 * np.pi , datalength,endpoint = False)
# 閉合角度
angle = np.concatenate((angle,[angle[0]]),axis = 0)
print('五個特征值之間的角度為:\n')
print('angle:\n',angle)
# 將繪的圖中的 尾部閉合 構成 回路圖
centers = np.concatenate((data,data[:,0:1]),axis=1)
for i in range(centers.shape[0]):
data1 = centers[i, :]
print('data1:\n',data1)
plt.polar(angle,data1)
# 添加標題
plt.title('航空公司客戶聚類結果')
# 修改刻度
plt.xticks(angle[:-1], ['L', 'R', 'F', 'M', 'C'])
# 添加圖例
plt.legend(['第一類客戶', '第二類客戶', '第三類客戶', '第四類客戶', '第五類客戶'], loc=0)
# 保存
plt.savefig('../datas/航空公司客戶聚類結果test1.png')
# 3、保存及展示
plt.show()
雷達圖展示:
5、主函數
def main():
"""
主函數:程序的入口
:return:
"""
# 1、加載數據
air_data = load_data()
print("原始的數據形狀是:\n", air_data)
# 處理數據
air_data = deal_data(air_data)
print("處理好的數據是:\n", air_data)
print("處理好的數據形狀是:\n", air_data.shape)
# 5、算法預測K-Means
# (1)實例化對象
# n_clusters = 5指的是分為五個簇
km = KMeans(n_clusters=5, init='k-means++')
# 2、訓練數據
km.fit(air_data)
# 3、預測
y_pre = km.predict(air_data)
# # 獲取最終的聚類中心
centers = km.cluster_centers_
print('y_pre:\n', y_pre) # 輸出聚類中簇的分類以及個數
print('centers:\n', centers)
# 4、繪制雷達圖及修飾
show_plt(centers)
if __name__ == '__main__':
main() # 啟動
聚類結果分析:
6、模型應用
根據對各個客戶群進行特征分析,采取下面的一些營銷手段和策略,為航空公司的價值 客戶群管理提供參考:
- 1、會員的升級與保級
- 航空公司的會員可以分為白金卡會員、金卡會員、銀卡會員和普通卡會員,其中非普通 卡會員可以統稱為航空公司的精英會員。雖然各個航空公司都有自己的特點和規定,但會員 制的管理方法是大同小異的。成為精英會員一般都是要求在一定時間內(如一年)積累一定的 飛行里程或航段,達到這種要求后就會在有效期內(通常為兩年)成為精英會員,並享受相應 的高級別服務。有效期快結束時,根據相關評價方法確定客戶是否有資格繼續作為精英會員, 然后對該客戶進行相應的升級或降級。
- 然而,由於許多客戶並沒有意識到或根本不了解會員升級或保級的時間與要求(相關的 文件說明往往復雜且不易理解),經常在評價期過后才發現自己其實只差一點就可以實現升 級或保級,卻錯過了機會,使之前的里程積累白白損失。同時,這種認知還可能導致客因此, 航空公司在對會員升級或保級進行評價的時間點之前,可以對那些接近但尚未戶的不滿,就 放棄在本公司的消費。達到要求的較高消費客戶進行適當提醒甚至采取一些促銷活動,刺激 他們通過消費達到相應標准。這樣既可以獲得收益,同時也提高了客戶的滿意度,增加了公 司的精英會員。
- 2、首次兌換
- 航空公司常旅客計划中最能夠吸引客戶的內容就是客戶可以通過消費積累的里程來換 免票或免費升艙等。各個航空公司都有一個首次兌換標准,也就是當客戶的里程或期段積累 到一定程度時才可以實現第一次兌換,這個標准會高於正常的里程兌換標准。但是多公司的里程積累隨着時間會進行一定的削減,例如有的公司會在年末對該年積累的里進行折半處理。 這樣會導致許多不了解情況的會員白白損失自己好不容易積累的里程,甚至總是難以實現首 次兌換。同樣,這也會引起客戶的不滿或流失。可以采取的措施是據庫中提取出接近但尚未 達到首次兌換標准的會員,對他們進行提醒或促銷,使他們通過消費達到標准。一旦實現了 首次兌換,客戶在本公司進行再次消費兌換就比在其他公司行兌換要容易許多,等於在一定 程度上提高了轉移的成本。另外,在一些特殊的時間點(如里程折半的時間點)之前可以給客 戶一些提醒,這樣可以增加客戶的滿意度
- 3、交叉銷售
- 通過發行聯名卡等與非航空類企業的合作,使客戶在其他企業的消費過程中獲得本司的 積分,增強與公司的聯系,提高他們的忠誠度。如可以查看重要客戶在非航空類合作伙伴處 的里程積累情況,找出他們習慣的里程積累方式(是否經常在合作伙伴處消費,更喜歡消費 哪些類型合作伙伴的產品),對他們進行相應促銷。客戶識別期和發展期為客戶關系打下基石,但是這兩個時期帶來的客戶關系是短暫的不穩定的。企業要獲取長期的利潤,必須具有 穩定的、高質量的客戶。保持客戶對於企業是至關重要的,不僅因為爭取一個新客戶的成本 遠遠高於維持老客戶的成本,更重要的是客戶流失會造成公司收益的直接損失。因此,在這 一時期,航空公司應該努力維系客戶關系水平,使之處於較高的水准,最大化生命周期內公 司與客戶的互動價值,並使這樣的高水平盡可能延長。對於這一階段的客戶,主要應該通過 提供優質的服務產品和提高服務水平來提高客戶的滿意度。通過根據對常旅客數據庫的數據 分析,進行客戶細分,可以獲得重要保持客戶的名單。這類客戶一般所乘航班的平均折扣系 數(C)較高,最近乘機距今的時間長度(R)低,飛行次數(F)或總飛行里程(M)也較高。他們是 航空公司的價值客戶,是最為理想的客戶類型,對航空公司的貢獻最大,所占比例卻比較小。 航空公司應該優先將資源投放到他們身上,對他們進行差異化管理和一對一營銷,提高這類 客戶的忠誠度與滿意度,盡可能延長這類客戶的高水平消費。