1. 案例背景
国内某航空公司面临客户流失,竞争力下降和航空资源未充分利用等经营危机。 通过建立合理的客户价值评估模型,对客户进行分群,分析比较不同客户群的客户价值,并制定相应的营销策略,对不同的客户群提供个性化的客户服务。
案例来源:Python数据分析与挖掘实战一书
2. 特征选择
识别客户价值应用最广泛的模型为RFM模型,在传统RFM模型中,M表示一段时间内,客户的总消费金额,由于航空票价受运输距离,舱位等级等多种因素影响,同样消费金额不同的旅客对航空公司的价值是不同的。例如,以为购买长航线,低等级舱位票的客户与一位购买短航线,高等级舱位的旅客相比,后者对于航空公司而言价值可能更高。因此我们选择客户一定时间内积累的飞行里程M和客户在一定时间内乘坐舱位所对应的折扣系数的均值C代表传统RFM模型中的M。此外,考虑航空公司会员入会时长在一定程度上影响客户价值,所以选取航空公司入会时长作为另一重要指标。
2.1变量提取
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
% matplotlib inline
import warnings
warnings.filterwarnings('ignore')
os.chdir('D:\BaiduNetdiskDownload\图书配套数据、代码\chapter7\demo\data')
data = pd.read_csv('air_data.csv',encoding='utf-8')#加载数据
data['FFP_DATE'] = pd.to_datetime(data['FFP_DATE'])#将入会时间变量转换为pandas.datetime时间序列格式
data['LOAD_TIME'] = pd.to_datetime(data['LOAD_TIME'])#将数据读取时间变量转换为pandas.datetime时间序列格式
col = ['FFP_DATE', 'LOAD_TIME','avg_discount','LAST_TO_END','FLIGHT_COUNT','SEG_KM_SUM']
data_rfm = data[col]
data_rfm['L'] = (data_rfm['LOAD_TIME'] - data_rfm['FFP_DATE']).map(lambda x:x/np.timedelta64(30,'D'))
#入会时间与读取时间序列差值为天数转变为月数
data_rfm['C'] = data_rfm['avg_discount']
data_rfm['R'] = data_rfm['LAST_TO_END']
data_rfm['F'] = data_rfm['FLIGHT_COUNT']
data_rfm['M'] = data_rfm['SEG_KM_SUM']
data_rfm= data_rfm[['L', 'C', 'R', 'F', 'M']]
data_rfm.head()
2.2数据探索性分析
fig,axe = plt.subplots(3,2,figsize=(10,6))
data_rfm['L'].plot.box(ax=axe[0,0])
data_rfm['C'].plot.box(ax=axe[0,1])
data_rfm['F'].plot.box(ax=axe[1,0])
data_rfm['M'].plot.box(ax=axe[1,1])
data_rfm['R'].plot.box(ax=axe[2,0])
sns.set_style("white")
sns.set_context("paper")
sns.scatterplot(x='F',y='M',hue='C',data=data_rfm)
plt.legend(loc = 'upper left')
乘坐频率和乘坐公里呈正相关,且乘坐频率较小,乘坐里程低的客户机票折扣较低,观察数据分布,发现M大于50万的数据属于异常值,远偏离客户族群
2.3异常值处理
离群点会严重影响KMeans聚类效果,删除离群点数据
data_rfm = data_rfm[data_rfm['M']<500000]
2.4标准化处理
由于数据纲量(度量单位)不统一,需将数据做标准化处理
data_rfm.columns = [['L入会时长','C平均折扣率','R近期乘坐航班间隔','F乘坐次数','M乘坐里程']]
data_zs = (data_rfm -data_rfm.mean())/data_rfm.std(axis=0)#Z- Score标准化
3. 模型构建
采用K-Means算法,基于RFM模型分类结合业务理解将客户分为5类
from sklearn.cluster import KMeans
model1 = KMeans(n_clusters= 5,max_iter= 1000)
model1.fit(data_zs)
data_cl = df.groupby('type').mean()
data_cl.columns = [i+'均值' for i in data_cl.columns]
data_cl['样本个数'] = df.groupby('type').count().iloc[:,0]
data_cl.index = ['群体1','群体2','群体3','群体4','群体5']
from pyecharts import Pie #绘制饼图
attr = data_cl.index
v1 = data_cl['样本个数']
pie = Pie("各分类群体占比")
pie.add("", attr, v1, is_label_show=True,radius=[20, 60])
pie
- 重要保持客户:该类客户经常乘坐本公司航班,乘坐次数及乘坐里程都较其他群体高,对机票折扣敏感度不高,对航空公司的贡献最大,所占比例较小(8.57%)。航空公司应优先将资源投放到他们身上,对他们进行差异化管理和一对一营销,提高这类客户的忠诚度和满意度,尽可能延长这类客户的高消费水平。
-
重要发展客户:这类客户的不在意机票折扣,加价购票也常有发生,但他们不是经常乘坐本公司航班,乘坐次数及乘坐里程都较低,这类客户入会时长较短,他们是航空公司的潜在价值客户。虽然这类客户当前在公司消费水平不高,但却有很大的发展潜力。航空公司要努力促使这类客户增加在本公司的消费水平。通过客户价值的提升,加强这类客户的满意度,提高他们转向竞争对手的转移成本,使他们逐渐成为公司的忠诚客户。
-
重要挽留客户:这类客户是公司的老客户,入会时间较长,近期也有选择本公司航班乘坐,但选择的机票都是较低的折扣,乘坐里程和乘坐次数较高,他们的客户价值变化不确定性很高,由于这类客户衰退的原因各不相同,所以掌握这些客户的最新信息,维持与客户的互动就显得尤为重要。航空公司应根据他们的最近消费时间,消费次数的变化情况,推测客户消费的异动,并列出客户的名单,对其重点联系,采取一定的营销手段,延长客户的生命周期。
- 一般与低价值客户:这类客户只会选择在机票折扣最低的时候乘坐或很长时间才会乘坐本公司航班,一般在航空公司机票打折的时候,才会乘坐本公司航班。他们属于航空公司的一般用户和低价值客户,所占比例较大(59.5%)
4.模型应用
根据对各个客户群进行特征分析,采取下面的一些营销手段和策略,为航空公司的价值客户群管理提供参考。
本段参考Python数据分析与挖掘实战一书,具体模型应用应与业务团队沟通,并做群体抽样,营销对比
- 会员的升级与保级
航空公司的会员可以分为白金卡会员、金卡会员、银卡会员、普通卡会员,其中非普通卡会员可以统称为航空公司的精英会员。虽然各个航空公司都有自己的特点和规定,但会员制的管理方法是大同小异的。成为精英会员一般都是要求在一定时间内(如一年)积累一定的飞行里程或航段,达到这种要求后就会在有效期内(通常为两年)成为精英会员,并享受相应的高级别服务。有效期快结束时,根据相关评价方法确定客户是否有资格继续作为精英会员,然后对该客户进行相应地升级或降级。然而,由于许多客户并没有意识到或根本不了解会员升级或保级的时间与要求,经常在评价期过后才发现自己其实只差一点就可以实现升级或保级,却错过了机会,使之前的里程积累白白损失。同时,这种认知还可能导致客户的不满,干脆放弃在本公司的消费。因此,航空公司可以在对会员升级或保级进行评价的时间点之前,对那些接近但尚未达到要求的较高消费客户进行适当提醒甚至采取一些促销活动,刺激他们通过消费达到相应标准。这样既可以获得收益,同时也提高了客户的满意度,增加了公司的精英会员。
- 首次兑换
航空公司常旅客计划中最能够吸引客户的内容就是客户可以通过消费积累的里程来兑换免票或免费升舱等。各个航空公司都有一个首次兑换标准,也就是当客户的里程或航段积累到一定程度时才可以实现第一次兑换,这个标准会高于正常的里程兑换标准。但是很多公司的里程积累随着时间会进行一定地削减,例如有的公司会在年末对该年积累的里程进行折半处理。这样会导致许多不了解情况的会员白白损失自己好不容易积累的里程,甚至总是难以实现首次兑换。同样,这也会引起客户的不满或流失。可以采取的措施是从数据库中提取出接近但尚未达到首次兑换标准的会员,对他们进行提醒或促销,使他们通过消费达到标准。一旦实现了首次兑换,客户在本公司进行再次消费兑换就比在其他公司进行兑换要容易许多,在一定程度上等于提高了转移的成本。另外,在一些特殊的时间点(如里程折半的时间点)之前可以给客户一些提醒,这样可以增加客户的满意度。
- 交叉销售
通过发行联名卡等与非航空类企业的合作,使客户在其他企业的消费过程中获得本公司的积分,增强与公司的联系,提高他们的忠诚度。例如,可以查看重要客户在非航空类合作伙伴处的里程积累情况,找出他们习惯的里程积累方式(是否经常在合作伙伴处消费、更喜欢消费哪些类型合作伙伴的产品),对他们进行相应促销。客户识别期和发展期为客户关系打下基石,但是这两个时期带来的客户关系是短暂的、不稳定的。企业要获取长期的利润,必须具有稳定的、高质量的客户。保持客户对于企业是至关重要的,不仅因为争取一个新客户的成本远远高于维持老客户的成本,更重要的是客户流失会造成公司收益的直接损失。因此,在这一时期,航空公司应该努力维系客户关系,使之处于较高的水准,最大化生命周期内公司与客户的互动价值,并使这样的高水平尽可能延长。对于这一阶段的客户,主要应该通过提供优质的服务产品和提高服务水平来提高客户的满意度。通过对旅客数据库的数据挖掘、进行客户细分,可以获得重要保持客户的名单。这类客户一般所乘航班的平均折扣率(C)较高,最近乘坐过本公司航班(R低)、乘坐的频率(F)或里程(M)也较高。他们是航空公司的价值客户,是最理想的客户类型,对航空公司的贡献最大,所占比例却比较小。航空公司应该优先将资源投放到他们身上,对他们进行差异化管理和一对一营销,提高这类客户的忠诚度与满意度,尽可能延长这类客户的高水平消费。