17年也可以说是大数据的一年,大数据一词在这些年横空崛起,Hadoop和Hive使用的越来越多,本期我们来学习下如何使用Hadoop和Hive对航空公司客户进行价值分析。航空公司通常会将客户划分成几种客户,如:重要保持客户、重要发展客户、重要挽留客户、一般客户和低价值客户。我们首先使用Hive对客户数据进行探索分析、数据预处理并且建立LRFMC模型,在使用Hadoop使用Kmeans对客户进行聚类分群,来实现航空公司利益最大化。
hadoop
我们本次教程使用的数据集包含了62988条数据,其中大约有44个字段,主要字段有客户基本信息(会员卡号,入会时间等)、乘机信息(票价收入,平均折扣率等)、积分信息(积分兑换次数等)。
我们先来看下数据的格式:
数据格式1
数据格式2
数据格式3
数据格式4
得知数据类型后,我们首先在Hive中建立数据库,在数据库中新建一张表,用来存储数据,如下所示:
数据表
数据表接上
建立好数据表后,我们将数据导入到刚刚建好的表格中:
导入数据表
根据现实生活世界的业务逻辑,我们发现在44个字段中真正能使用到的只有FFP_DATE(入会时间)、LOAD_TIME(观测窗口结束时间)、FLIGHT_COUNT(乘机次数)、SUM_YR_1(票价收入1)、SEG_KM_SUM(飞行里程数)、LAST_FLIGHT_DATE(最后一次乘机时间)、AVG_DISCOUNT(平均折扣率),我们剔除其他字段,仅仅保留这些有用的字段,小伙伴可以自己挑选需要保留的字段。
数据探索
我们先来统计SUM_YR_1、SEG_KM_SUM、AVG_DISCOUNT三个字段的空值记录数,保存到null_count表中,如下所示:
空值统计
接下来我们来统计SUM_YR_1、SEG_KM_SUM、AVG_DISCOUNT三个字段的最小值并保存到min_count表中,如下所示:
字段最小值统计
我们来查看写null_count表和min_count表结果如下所示:
统计结果展示
数据清洗
通过数据探索分析,我们发现数据中存在缺失值,但这类数据所占总数据的比例很小,所以直接舍弃,接下来我们来定义清洗规则,如下所示:
1、丢弃票价为空的记录:
丢弃票价为空的记录
2、在上一步基础上,丢弃平均折扣率为0.0的记录:
丢弃平均折扣率为0的记录
3、在上一步基础上,丢弃票价为0、平均折扣率不为0、总飞行公里数大于0的记录:
进一步清理
数据清洗结果如下:
数据清洗结果
数据规约
为了建立LRFMC模型,从清洗后的数据集中选择与指标相关的6个属性:LOAD_TIME、FFP_DATE、LAST_TO_END、FLIGHT_COUNT、SEG_KM_SUM、AVG_DISCOUNT,如下所示:
选择相关属性
选取flfasl表中前五条查看如下所示:
前5条数据
数据变换
数据变换是将数据转换成“适当的”格式,以适应挖掘任务及算法的需要,在本案例中主要采用的数据变换方式为:
属性构造:
构造LRFMC 5个指标:
1、L的构造:
会员入会时间距离观测窗口结束的月数 = 观测窗口的结束时间 - 入会时间 [单位: 月],公式为:
2、R的构造:
客户最近一次乘坐公司飞机距观测窗口结束的月数 = 最后一次乘机时间至观测窗口末端时长[单位: 月],公式为:
3、F的构造:
客户再观测窗口内乘坐公司飞机的次数 = 观测窗口的飞行次数[单位: 次],公式为:
4、M的构造:
客户再观测时间内在公司累计的飞行里程 = 观测窗口总飞行公里数[单位: 公里],公式为:
5、C的构造:
客户在观测时间内乘坐舱位所对应的折扣系数的平均值 = 平均折扣率 [单位: 无],公式为:
数据标准化
对5个指标数据分布进行分析,发现5个指标的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据进行标准化处理,如下所示:
统计表
即 标准化值 = (x - min(x))/(max(x) - min(x))
Kmeans聚类
根据业务逻辑,确定将客户大致分为五类,将k=5,以及标准化后的数据,利用之前建立的Kmeans模型,可算出这五类客户群体的聚类中心。根据聚类中心结果,再结合航空公司的业务逻辑,可得如下结果:
聚类结果
好了,整体流程到这里就结束了。数据和程序会整理发放出来,大家可以点击关注,怪客为你每天带来小教程和欢乐,您的每一次点击,收藏,都是我们更新的原动力。能力不足的地方恳请大家多多包涵并且在底部评论出来。