数据挖掘之航空公司客户价值分析

Source

课程设计选题:详细文档项目见https://download.csdn.net/download/sereasuesue/12050550

题目:航空公司客户价值分析

目录

一、 任务背景 2

二、 数据挖掘目标 2

三、数据探索与预处理 3

构建航空客户价值分析的关键特征 3

数据抽取 5

探索性分析 5

数据处理 6

四、模型构建与评价 12

1.模型构建K-Means聚类算法 12

客户价值分析 13

五、 总结 16

 

 

 

  • 任务背景

高铁、动车等铁路的不断兴建,出行方式的多元化让航空公司受到很大的冲击。航空公司之间竞争也很激烈,除了四大航空公司之间的竞争之外,还有新兴产业的各类小型航空公司、民营航空公司,旅游等。甚至国外航线出现高速度增长。

随着时代的发展,客户问题越来越受到关注,客户流失对利润增长造成了非常大的负面影响。客户与航空公司的关系越长,航空公司的利润就越高。一个客户使用了几次这次服务,感觉服务不错,那下次还会倾向于这个服务,但是要获得新客户,不仅需要在广告和人员工资上花费很多,去吸引顾客,在销售、市场也会花费很多,并且大多数新客户产生的利润不如那些流失的老客户多。很明显,失去一个客户对公司来说比得到一个新客户更昂贵。另外老用户也可以带来新用户。

因此,在这一背景下,分析航空公司客户数据,对客户进行分类,提高客户流失率是当务之急。航空公司应针对不同类型的客户制定相应的营销模式,以实现利润最大化。。

  • 数据挖掘目标

按航空公司客户数据进行分类。分析了不同类型顾客的特点,比较不同类型顾客的顾客价值。可以为不同价值客户类别提供个性化服务,并采用相应的营销策略。

分类客户的目的,就是要更精确地说明谁是我们的客户,了解客户到底有哪些实际需要,企业应该去吸引哪些客户,哪些客户应该被重点保留,以及应该如何迎合重点客户的需求等重要问题,进而使客户关系管理真正成为业务获得成功、扩大产品销量的催化剂。客户分类是客户关系管理的核心。帕累托定律(2/8定律):就是20%的顾客给企业带来80%的销售利润。20%的客户其利润率达到100%。现有客户可以带来90%以上的收入。而大部分的营销预算经常被用在非现有客户上。在客户金字塔中具有升级潜力有5%至30%的客户。客户金字塔中客户升级2%,销售收入增加10%,利润就增加50%。

这些经验可能并不完全准确,但我们可以看到新时代客户差异化的趋势和客户价值分析的重要性。

企业应该投入大量的资源来赢得客户,而目标应该放在一小部分能够为企业带来高利润的客户群中,而不是所有的客户群中,以便长期实现自身的特点。航空公司如何投入有限的资源来实现精准营销,从而提高企业的竞争力,最终实现利润最大化?这是航空公司面临的第一个也是必要解决的问题。

 

三、数据探索与预处理

构建航空客户价值分析的关键特征

这种数据挖掘的目标是通过航空公司的客户数据识别客户价值,并识别具有不同价值的客户。首先,目标是客户价值识别。RFM模型是识别顾客价值最常用的模型,可以用来对顾客进行分类。数据挖掘的目标是客户价值分析,即通过航空公司客户数据识别具有不同价值的客户。识别客户价值最常用的模型是RFM模型。

R(Recency)指的是最近一次消费时间与截止时间的间隔。一般而言,最近一次消费时间与截止时间的间隔越短,说明对当时提供的商品或是服务也最有可能感兴趣。

F(Frequency)指顾客在某段时间内所消费的次数。可以说消费频率越高的顾客,也是满意度越高的顾客,其忠诚度也就越高,顾客价值也就越大。

M(Monetary)指顾客在某段时间内所消费的金额。消费金额越大的顾客,他们的消费能力自然也就越大,这就是所谓“20%的顾客贡献了80%的销售额”的二八法则

RFM模型包括三个特征,使用三维坐标系进行展示,如图所示。X轴表示最近(时间),Y轴表示频率,Z轴表示货币,每个轴一般会分成5级表示程度,1为最小,5为最大

转存失败重新上传取消正在上传…重新上传取消

然而,由于机票价格受距离、舱位等诸多因素的影响,同一金额对航空公司的价值也不尽相同。因此,我们需要对指标进行修订。在所选变量中,客舱系数=对应于客舱系数的平均折扣系数=c,距离系数=某段时间内的累计飞行里程=m。

考虑到航空公司的会员制会因用户的出勤时间长短而在一定程度上影响客户价值,增加指标L=成为会员时间长度=客户关系长度决定了五个指标。R代表客户最近一次消费距今时间长度,客户关系长度L(从入会之日算起),消费频率f、飞行里程m和折扣系数。以上指标是航空公司对客户价值的识别,称为LRFMC模型。

综上,本案例,采用聚类的办法进行识别客户价值,以LRFMC模型为基础该案例,总体流程如下图

挖掘步骤

从航空公司中,有选择地提取数据进行观察、探索性数据分析和预处理,包括缺失和异常值的分析和处理、属性说明、清理和转换。将处理后的数据作为建模数据,利用客流价值的LRFMC模型对客户进行聚类。然后分析每个客户群的特点,识别出有价值的客户。针对模型结果得到不同价值的客户,采用不同的营销手段,推送定制化的营销服务,重点维护老客户

数据抽取

    选取两年的时间作为观察窗口

探索性分析

对航空公司的客户数据进行了探索和分析。主要分析缺失和异常数据。通过观察发现,有票价为0、折扣率为0、飞行公里数为0的数据。票价为空值,可能是不存在飞行记录,其他空值可能是,飞机票来自于积分兑换、特价0折优惠等渠道

查找每列属性观测值中空值的个数、最大值、最小值的代码如下

#-*- coding: utf-8 -*-
#对数据进行基本的探索
#返回缺失值个数以及最大最小值

import pandas as pd

datafile= '../data/air_data.csv' #航空原始数据,第一行为属性标签
resultfile = '../tmp/explore1.xls' #数据探索结果表

data = pd.read_csv(datafile, encoding = 'utf-8') #读取原始数据,指定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) #导出结果

结果如下

 

数据处理

数据清洗

航空公司客户原始数据中有少量缺失和异常值,需要进行清洗后才能用于分析。

通过对数据观察发现原始数据中存在票价为空值,票价最小值为0,折扣率最小值为0,总飞行公里数大于0的记录。票价为空值的数据可能是客户不存在乘机记录造成。

处理方法:将票价为空的记录丢弃。

其他的数据可能是客户乘坐0折机票或者积分兑换造成。由于原始数据量大,通过计算发现这类数据所占比例较小,对于问题影响不大,因此对其进行丢弃处理。

处理方法:将票价为0的记录丢弃,丢弃平均折扣率不为0,总飞行公里数大于0的记录。

 

 

删除后剩余的样本值是62044个,可见正常样本的比例超过98%,因此不会对分析结果产生较大的影响

属性规约

航空公司客户价值原始数据中的属性太多,对其评估通常基于LRFMC模型,与其相关的只有6个属性如下。删除与其不相关,冗余的其他的属性

 

 

数据变换

原始数据没有给出LRFMC模型的五个指标,需通过计算得出,而上面6个属性与这5个指标的关系如下:

L(客户关系长度)=LOAD_TIME - FFP_DATE

会员入会时间距观测窗口结束的月数=观测窗口结束的时间-入会时间(单位:月)

R=LAST_TO_END

客户最近一次乘坐公司飞机距观测窗口结束的月数=最后一次乘机时间至观察窗口末端时长[单位:月]

F=FLIGHT_COUNT

客户在观测窗口内乘坐公司飞机的次数=观测窗口的飞行次数(单位:次)

M=SEG_KM_SUM

客户在观测时间内在公司累计的飞行里程=观测窗口的总飞行公里数(单位:公里)

C=AVG_DISCOUNT

客户在观测时间内乘坐舱位所对应的折扣系数的平均值=平均折扣率


import pandas as pd
import numpy as np
import datetime

datafile='../tmp/data_cleaned.xls'
data=pd.read_excel(datafile)
d1, d2 = [], []
for x in data['LOAD_TIME']:
    d1.append(datetime.datetime.strptime(x, '%Y/%m/%d'))
for y in data['FFP_DATE']:
    d2.append(datetime.datetime.strptime(y, '%Y/%m/%d'))

d3 = [d1[i] - d2[i] for i in range(len(d1))]
data['L'] = [round((x.days / 30), 2) for x in d3]
data2 = data[['L', 'LAST_TO_END', 'FLIGHT_COUNT', 'SEG_KM_SUM', 'avg_discount']]
data2.columns = ['L', 'R', 'F', 'M', 'C']
data2.to_csv('../data/zscoredata1.csv',  index=False)

 

发现得到数据和网上正确答案存在部分差距,可能是数据处理格式化和精确度的问题

从数据中提取5个指标后,对数据分布情况进行分析(分析结果explore2.xls)。从表中数据可以发现,五个特征的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据做标准化处理。

 

 

客户价值分析

画雷达图

#-*- coding: utf-8 -*-
#画出特征雷达图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans #导入K均值聚类算法
inputfile = '../tmp/zscoreddata1.xls' #待聚类的数据文件
k = 5                       #需要进行的聚类类别数
#读取数据并进行聚类分析
data = pd.read_excel(inputfile) #读取数据
#调用k-means算法,进行聚类分析
kmodel = KMeans(n_clusters = k, n_jobs = 4) #n_jobs是并行数,一般等于CPU数较好
kmodel.fit(data) #训练模型
labels = data.columns #标签
k = 5 #数据个数
plot_data = kmodel.cluster_centers_
color = ['b', 'g', 'r', 'c', 'y'] #指定颜色

angles = np.linspace(0, 2*np.pi, k, endpoint=False)
plot_data = np.concatenate((plot_data, plot_data[:,[0]]), axis=1) # 闭合
angles = np.concatenate((angles, [angles[0]])) # 闭合

fig = plt.figure()
ax = fig.add_subplot(111, polar=True) #设置为极坐标方式
for i in range(len(plot_data)):
  ax.plot(angles, plot_data[i], 'o-', color = color[i], label = 'client'+str(i+1), linewidth=2)# 画线

ax.set_rgrids(np.arange(0.01, 3.5, 0.5), np.arange(-1, 2.5, 0.5), fontproperties="SimHei")
ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")
ax.set_title("matplotlib雷达图", va='bottom', fontproperties="SimHei")
plt.legend(loc = 4)
plt.show()

 

 

客户群4 聚类个数5336个 曲线为client1[blue] 此类用户的特点是F(乘坐次数),M很高,L入会时长也不低,R(最近乘坐航班)属性最小,可作为最优先的目标,进行差异化管理,提高满意度。可以作为重要保持客户

客户群1聚类个数4186个Client4[yellow] 的C属性最大,R(最近乘坐航班)低,此类客户的特征是潜在价值客户。虽然说,可以看到当前价值不高,但是却有很大的发展潜力,促使这类客户在该公司消费和合作伙伴处消费,这样他们很快可以为公司创造价值。可以作为重要发展客户

客户群3 聚类个数15740个雷达图曲线为client1[red]的L属性较大但F,M较低。这说明之前可能乘坐航班过多,但最近乘坐较少,可能是流失或者其他原因。增加与这类客户的互动,了解情况,采取一定手段,延长客户生命周期。为重要挽留用户

客户群2 聚类个数24658个雷达图曲线为client2[green] 的L R属性最小

客户群5聚类个数12124个雷达图曲线为client5[Celadan青色]的R属性最大

客户群2和5的特点是C值较低、近期航班(R)较少、行程次数(F)较少或里程(M)较低。。但入会时长(L)也较短,因此可能是普通的工薪家庭,只有当公司提供折扣和促销时,他们才可以乘坐我们的航班。可被视为是一般与低价值客户

 

通过LRFMC 分析可将航空公司的客户群体划分成以上等级针对不同等级的客户,航空公司可以采取不同的管理策略

首次兑换会员的升级与保级:可从客户数据库中提取接近但不符合首次可兑换标准的客户,并进行进行提醒或者进行促销活动,使其易于消费达到标准成为会员;在对会员升级或保级进行评价的时间点之前,对那些接近但尚未达到要求的客户进行适当提醒或者一些促销活动。并告知会员的权限和活动。一旦成为会员,客户在该公司进行再次消费兑换就比在其他公司进行兑换要容易许多,(心理原因潜意思行为)这样比创建一个新用户的成该低的多。这样,我们不仅可以获得利润,还可以提高客户满意度,增加公司的精英会员。

交叉销售;针对各类重要客户。查看这样客户在其他合作伙伴的消费情况,换句话说,某个用户喜欢买东西,可以买东西时赠送给他航空的优惠卷或者积分,就是找出他们习惯的里程积累的方式喜欢消费哪些类型合作伙伴的产品,对他们进行相应推广,使客户在其他企业的消费过程中获得该公司的积分,这样他们和公司的联系会更加密切,也提高他们对公司忠诚度。

客户保持;针对重要保持客户。根据总得分的排列情况,优先将资源应该被投放到这类总得分较高的客户身上,可以设置专享服务让他们感受到他们被重视。

客户的流失预警:针对重要挽留或保持客户。我们可以定期观测重要客户的R、F、M、C 的变化情况,推测客户消费的异动状况,计算出客户流失的可能性,列出客户名单,重点联系然后进行推送活动,以最好有效的方式防范重要客户流失。

客户的发展:针对重要发展客户。可以采取加强与这类客户的沟通,使他们对航空公司的会员服务、特色活动,优惠活动、企业文化有更多的了解,提供各类会员资讯、促销信息等。