基于大数据的航空公司的客户价值画像研究

2021-10-19 13:49储文星杨杉
现代信息科技 2021年6期
关键词:聚类分析大数据

储文星 杨杉

摘  要:以不同航空公司客户数据作为研究对象,对不同价值的航空客户进行画像。采用Excel和PyCharm对不同等级会员按客户性别、客户年龄、各年份会员入会人数进行画像分析,并提取LRFMC这五个特征值进行聚类分析,从而得到航空公司不同客户的价值画像。借助客户价值画像,航空公司可以针对不同的客户群体进行不同的营销方案设计。

关键词:大数据;航空公司客户;画像研究;聚类分析

中图分类号:TP311.1  文献标识码:A 文章编号:2096-4706(2021)06-0137-05

Research on Customer Value Portrait of Airlines Based on Big Data

CHU Wenxing,YANG Shan

(School of Computer and Software,Jincheng College of Sichuan University,Chengdu  611731,China)

Abstract:Taking the customer data of different airlines as the research object,this paper draws a portrait for the aviation customers with different values. Excel and PyCharm are used to make portrait analysis on members of different grades according to customer gender,customer age and membership number in each year,and extract five characteristic values such as LRFMC for cluster analysis,so as to obtain the value portraits of different customers of airlines. With the help of customer value portraits,airlines can design different marketing schemes for different customer groups.

Keywords:big data;airline customer;portrait research;cluster analysis

0  引  言

隨着社会信息化的迅速发展,无论是数据的变化速率,还是数据的新增种类都在不断更新,数据研究变得越来越复杂,这意味着“大数据时代”到来。如今,大数据技术逐步融入企业的发展过程中[1],并产生了可观的能量和价值。

在国内外航空市场竞争日益激烈的背景下[2],随着民航信息化建设推进以及民航市场竞争日趋激烈,怎样改善个性化服务提高客户满意度是公司在体验经济时代必须面对的问题[3],航空公司开始深耕旅客价值,通过制定差异化旅客服务、提高营销精准性,不断地提升航空公司行业竞争水平。研究旅客价值的概念及旅客价值评估的经典模型,并分类比对了民航领域现有的旅客价值模型,提出可以将旅客价值应用于旅客细分,为航空公司优化营销资源分配、完善服务体系和市场策略、实现收益的高质增长提供参考依据[4]。

1  研究思路

以不同航空公司提供的客户数据,对数据进行清洗、特征选取以及标准化处理后,基于传统的RFM模型提出了LRFMC客户价值评价模型,LRFMC分别对应客户入会时间距观测窗口的结束的月数、最近一次乘坐公司飞机距观测窗口的结束的月数、在观测窗口内乘坐飞机的次数、累计的飞行里程、客户在观测窗口内乘坐舱位对应的折扣系数的平均值,通过对比特征值的权重[5],进行K-Means聚类分析,得出不同价值客户分群,将得到的模型应用于航空公司,提高其经济效益。

2  数据说明

2.1  数据来源

数据来源于各航空公司的后台记录,以2014年3月31日作为结束时间,选取宽度为两年的时间段作为分析观测窗口,抽取观测窗口内有乘机记录的所有客户的详细数据形成历史数据,44个特征列,共62 988条记录。

2.2  数据清洗

原始数据的规模为62 988行,44列,发现其中存在票价为空值,折扣率为0,飞行公里数为0的情况。票价为空值,可能是不存在飞行记录,其他空值可能是,飞机票来自积分兑换等渠道。但其中有很多空值,对后续的数据分析无意义,所以将其进行删除。首先删除票价为空的行,得到数据规模为62 299行,44列;在此基础上保留票价非零,平均折扣率不为零且总飞行公里大于零的记录,其余的删除,最终得到数据规模为62 044行,44列。

2.3  数据特征选取

选取需求特征:客户入会时间距观测窗口的结束的月数(L)、最近一次乘坐公司飞机距观测窗口的结束的月数(R)、在观测窗口内乘坐飞机的次数(F)、累计的飞行里程(M)、客户在观测窗口内乘坐舱位对应的折扣系数的平均值(C)这五个作为航空公司识别客户价值的关键特征。

2.4  数据标准化

五个特征的取值范围数据差异较大,为了消除数量级数据的影响,需要对数据进行标准差标准化,并存储为新的数据表。

3  航空公司客户统计维度特征数据可视化

3.1  不同性别的客户分布画像

对于不同性别的客户进行统计要先使用分组聚合,使用groupby对性别列进行分组,统计不同性别的会员人数,绘制饼图,标记不同性别占总人数的百分比。具体代码实现为:

a=airline.groupby('GENDER').size()

aa=pd.DataFrame(a,columns=['counts'])

print(aa.index)

explod=[0.01,0.05] #设置各项离心n个半径

plt.pie(aa['counts'],explode=explod,labels=['男','女'], autopct='%1.1f%%')

plt.title('不同会员等级的分布画像')

plt.show()

由图1可知:会员中男性占比为76.5%,女性占比23.5%。说明在航空公司的客戶中,男性客户的比例较大。

3.2  不同会员等级性别的分布画像

对于不同等级性别的客户进行统计要先使用分组聚合,使用groupby对等级、性别列进行分组,统计不同等级中不同性别的会员人数,男性数量用灰色条形表示,女性数量用黑色条形表示,以此来绘制不同会员等级性别的分布直方图。具体代码实现为:

b=airline[['FFP_TIER','GENDER']].groupby(['FFP_TIER','GENDER']).size()

print(b)

b0=[item[0] for item in b.index] #会员等级

b1=[item[1] for item in b.index]#会员性别

b3=pd.DataFrame({'level':b0,'gender':b1})

b=pd.DataFrame({'count':b.values},index=range(b.shape[0])) #深拷贝

final=pd.concat([b3,b],axis=1)

print(final)

l=['4级','5级','6级']

bar_width=0.2

bar_1=list(range(3))

bar_2=[i+bar_width for i in bar_1]

plt.bar(bar_1,final.loc[(final['gender']== '男'),'count'],width= bar_width,label=l,color='pink')

plt.bar(bar_2,final.loc[(final['gender']==女),'count'],width= bar_width,label=l,color='blue')

plt.xlabel('会员等级')

plt.ylabel('数量')

#位置、标签、标签旋转的角度

plt.xticks(bar_1,l,size=15)

plt.xticks(bar_2,l,size=15)

plt.title('2000年各行业季度生产总值直方图')#设置图表标题

plt.title('不同会员等级性别的分布画像')

plt.show()

根据图2可知:大多数会员的等级都是4等级,男性4级会员人数高达40 000人,女性相较而言较少,只有10 000多人。在会员中,很少一部分的会员的等级为6,根据不同等级会员的人数分布,说明大多数会员其实乘坐飞机的次数都不是特别多;对于6等级的会员来说,他们乘坐飞机的次数很多,航空公司可以适当调低票价,以保证6等级的会员会坚持坐飞机,其他等级的会员可以再次乘坐飞机。

3.3  会员年龄的分布画像

对于不同年龄的客户进行统计要先使用分组聚合,使用groupby对年龄列进行分组,然后利用matplotlib模块中的boxplot函数来绘制会员年龄分布的箱型图。具体代码实现为:

age = airline['AGE'].dropna()

age = age.astype('int64')

#绘制会员年龄分布箱型图

fig = plt.figure(figsize=(5,10))

plt.boxplot(age, patch_artist=True, labels=['会员年龄'], boxprops={'facecolor': 'lightblue'}) #设置填充颜色

plt.title('会员年龄分布箱型图')

#显示y坐标轴的底线

plt.grid(axis='y')

plt.show()

由图3可知:会员客户的年龄多集中在35~50岁,会员年龄上限为50左右,下限为16左右,中位数在40上下,异常值主要集中在80岁上下,且图中含有极端值,年龄大于100岁,出于航空公司对客户的安全考虑,一般不建议年龄超过80岁的老人乘坐飞机。所以在后续数据处理中,可以将离群值进行删除,以保证数据的准确性和可靠性。

3.4  各年份会员入会人数分布画像

对于各年份会员入会人数进行统计要先使用分组聚合,使用groupby对年份列进行分组,使用datetime库提取入会时间中的年份,绘制直方图。

根据图4可知:在2004-2013年中,2004-2012年会员入会人数整体呈上升趋势,在2009年出现了少量下降,推测可能是因为受当时的金融危机影响,客户入会人数相较于2008年有所减少。但是随后在2013年,会员入会人数却出现陡然下降,幅度较大,推测有可能是受高铁、动车的快速发展的影响,国家对高铁的大力建设,导致相当一部分航空公司的客户流失。

4  航空公司客户价值分群

4.1  构建K-Means聚类算法

K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。我们首先需要确定的是适当的K值,也就是聚类中心数,这里我们的K值选择为5,然后实现客户价值分群,进行模型的训练并查看聚类中心点、样本的类别标签文件,统计不同类别样本的数目。最后我们将统计获取的内容:每个样本对应的类别、聚类中心对应类别下的数目都保存到csv文件里。样本对应的聚类类别表、样本对应的类别数目表如表1、表2所示。

具体代码实现为:

k=5  ##确定聚类中心数

#构建模型

kmeans_model=KMeans(n_clusters=k,n_jobs=4,random_state=123)

fit_kmeans=kmeans_model.fit(airline_scale)  #模型训练

#print('查看聚类中心:\n',kmeans_model.labels_)#查看样本的类别标签

#统计不同样本的数目

r1=pd.Series(kmeans_model.labels_).value_counts()

#print('最终每个类别的数目为:\n',r1)

# #

# #详细输出每个样本的类别

airline_lable=pd.concat([airline_scale,

pd.DataFrame(kmeans_model.labels_,index=airline_scale.index)],axis=1)

airline_lable.columns=list(airline_scale.columns)+['聚类类别']  #重命名表头

print('详细输出每个样本对应的类别:\n',airline_lable.tail())

#详细输出每个样本对应的类别数目

cluster_centers=pd.DataFrame(kmeans_model.cluster_centers_,

columns=['ZL','ZR','ZF','ZM','ZC'])

r=pd.concat([cluster_centers,r1],axis=1)  #横向连接,得到聚类中心的对应的类别

r.columns=list(cluster_centers.columns)+['类别数目']

print('详细输出每个样本对应的类别数目:\n',r)

4.2  聚类后不同客户群的特征雷达图

对聚类后的五个不同的客户群的特征数据通过pandas进行提取,将提取到的数据作为参数进行雷达图的绘制,在绘制雷达图时,由于客户群体有五个,为了避免一次次读数据的操作,引入了循环:

values1=data1.iloc[0,1:6].tolist()

values2=data1.iloc[1,1:6].tolist()

values3=data1.iloc[2,1:6].tolist()

values4=data1.iloc[3,1:6].tolist()

values5=data1.iloc[4,1:6].tolist()

feature=['ZL','ZR','ZF','ZM','ZC']

kinds=['customer1','customer2','customer3','customer4','customer5']

angles=np.linspace(0,2*np.pi,len(feature),endpoint=False)

angles=np.concatenate((angles,[angles[0]]))

feature= np.concatenate((feature,[feature[0]]))

fig1=plt.figure()

for values in [values1,values2,values3,values4,values5]:

values=np.concatenate((values,[values[0]]))

ax=fig1.add_subplot(111,polar=True)

ax.plot(angles,values,linewidth=1)

ax.set_thetagrids(angles*180/np.pi,feature)

ax.set_ylim(-1,3)

plt.title('聚类特征雷达图')

plt.legend(kinds)

plt.show()

由图5可知:客户群1在对应舱位折扣系数的平均值最高,说明该类乘客经常乘坐该航空公司的飞机出行;客户群2入会时间较短,但在消费时间间隔上较久,需要航空公司对其进行发展,加大该群体对其的消费力度;客户群3在航空公司消费频率较高,飛行里程也较远,他们是消费的主体力量,航空公司应该积极挽留该客户群体;客户群4各个特征指标都无较大特点,只是一般的客户;客户群5入会时间较长,但并未多次乘坐该航空公司飞机,价值较低。

由此得出表3客户价值分群表:根据不同特征描述将客户群1,2,3,4,5分别划分为:重要保持客户,重要发展客户,重要挽留客户,一般客户,以及低价值客户。

表3  客户价值分群表

根据雷达图上不同客户群,时间间隔插值中心与飞行次数中心以及平均每公里票价中心可以综合分析出不同客户群在某个时间区间飞行次数以及对应时间段内航班票价,根据其喜好或需求,对于不同客户群在飞行次数较高的时间段推荐不同票价的飞行航班。

5  结  论

随着国际航空市场的激烈竞争,部分航空公司面临着旅客流失、竞争力下降和资源未充分利用等经营危机,随着国际航空市场的激烈竞争,因此通过建立合理的LRMFC客户价值评估模型,对客户进行分群,分析及比较不同客户群的客户价值,并制定相应的营销策略,对不同的客户群提供个性化的服务,以此来提高航空公司的经济效益。

会员的升级与保级机制:航空公司可以在对会员升级保级或者降级的时间节点之前,对于接近但未达到要求的高消费用户进行适当的提醒或者采取促销活动刺激其消费并达到相应标准;对于已经降级的会员可以采取消费满足一定金额直接恢复到历史会员最高等级,这样既可以获得收益,也能够提高客户满意度。

积分兑换机制:航空公司对于本公司一定等级的会员可以采取积分累计制度,每一次在本公司购买机票可以获得购买机票相应金额一定比例的积分,积分可以用来换取机票折扣券,或者实体的礼物。

会员共享机制:各航空公司可合作,进行会员特权共享,拥有一家航空公司的会员的人群同时也可享受另一家航空公司的部分会员特权,可使两家公司合作共赢。

参考文献:

[1] 季杰,陈强仁,朱东.基于机器学习的航空客户价值分析 [J].电脑知识与技术,2020,16(14):238-239.

[2] 徐伶伶,张淑莲,张欣.基于大数据的航空公司客户价值的分析与研究 [J].信息与电脑(理论版),2019,31(23):109-110.

[3] 刘婷婷,王小丽,葛明涛.基于数据挖掘的航空公司客户价值分析 [J].山东工业技术,2017(4):287-288.

[4] 缪海旭.民航旅客价值初探 [J].经营与管理,2021(4):30-34

[5] 杨雄,徐鑫荣.基于LRFMC模型的客户价值数据挖掘方案 [J].电脑知识与技术,2021,17(6):22-25

作者简介:储文星(2000—),女,汉族,安徽安庆人,本科在读,研究方向:数据挖掘、大数据分析;通讯作者:杨杉(1983 —),女,漢族,四川成都人,副教授,博士,研究方向:数据挖掘、大数据。

猜你喜欢
聚类分析大数据
农村居民家庭人均生活消费支出分析
基于省会城市经济发展程度的实证分析
大数据环境下基于移动客户端的传统媒体转型思路
基于聚类分析的互联网广告投放研究
基于大数据背景下的智慧城市建设研究
数据+舆情:南方报业创新转型提高服务能力的探索
“县级供电企业生产经营统计一套”表辅助决策模式研究