1. 思考:我们为什么要做《飞机票购买人群分类案例》?
当今社会,事事存在竞争,航空公司也不例外。想要从林立的航空公司中立足,就要有稳定且增长的盈利。
怎么保证这个盈利呢?这就要从营销策略上下手了,针对不同的客户采取不同的营销策略,才能保证最大的盈利。
那怎么找出不同的客户群呢?这就是这篇文章首先要探索的。
整体思路如下:1.根据航空公司的客户数据,对客户进行分类。
2.对不同的客户类别进行特征分析,比较不同类客户的客户价值。
3.对不同价值的客户类别提供个性化服务,制定相应的营销策略。
2.航空公司客户价值的LRFMC模型是什么?五个指标是什么?
LRFMC模型:
L:客户关系长度 = 会员入会时间距观测窗口结束的月数
R:消费时间间隔 = 客户最近一次乘坐公司飞机距观测窗口结束的月数
F:消费频率 = 客户在观测窗口内乘坐公司飞机的次数
M:飞行里程 = 客户在观测窗口内累计的飞行里程
C:折扣系数的平均值 = 客户在观测窗口内乘坐舱位所对应的折扣系数的平均值
实验步骤如下:
启动Hadoop集群,myhql,hive,上传数据到/root/目录。=============================================================================================
用Hive做数据预处理:
步骤如下:
1) hive -f create_air_data_base.hql 创建表create table air_data_base(
member_no string,
ffp_date string,
first_flight_date string,
gender string,
ffp_tier int,
work_city string,
work_province string,
work_country string,
age int,
load_time string,
flight_count int,
bp_sum bigint,
ep_sum_yr_1 int,
ep_sum_yr_2 bigint,
sum_yr_1 bigint,
sum_yr_2 bigint,
seg_km_sum bigint,
weighted_seg_km double,
last_flight_date string,
avg_flight_count double,
avg_bp_sum double,
begin_to_first int,
last_to_end int,
avg_interval float,
max_interval int,
add_points_sum_yr_1 bigint,
add_points_sum_yr_2 bigint,
exchange_count int,
avg_discount float,
p1y_flight_count int,
l1y_flight_count int,
p1y_bp_sum bigint,
l1y_bp_sum bigint,
ep_sum bigint,
add_point_sum bigint,
eli_add_point_sum bigint,
l1y_eli_add_points bigint,
points_sum bigint,
l1y_points_sum float,
ration_l1y_flight_count float,
ration_p1y_flight_count float,
ration_p1y_bps float,
ration_l1y_bps float,
point_notflight int
)row format delimited fields terminated by ',';
2) hive -f load_air_data_base.hql 导入数据
load data local inpath '/root/air_data_base.txt' overwrite into table air_data_base;
=============================================================================================
数据预处理:
本案例主要采用数据清洗、属性规约与数据变换的预处理方法。
1.数据清洗
通过数据探索分析,发现数据中存在缺失值,票价最小值为0、折扣率最小值为0、总飞行公里数大于0的记录。由于原始数据量大,这类数据所占比例较小,对于问题影响不大,因此对其进行丢弃处理。具体处理方法如下:
丢弃票价为空的记录。
丢弃票价为0、平均折扣率不为0、总飞行公里数大于0的记录。
1)hive -f create_null_count.hql 统计空值记录
use air;create table null_count as
select * from
(select count(*) as sum_yr_1_null_count from air_data_base where sum_yr_1 is null)
sum_yr_1_null,
(select count(*) as seg_km_sum_null_count from air_data_base where seg_km_sum is null)
seg_km_sum_null,
(select count(*) as avg_discount_null_count from air_data_base where avg_discount is null)
avg_discount_null ;
=============================================================================================
2)hive -f create_min_count.hql 统计最小值
use air;
create table min_count as select min(sum_yr_1) as sum_yr_1_min,
min(seg_km_sum) as seg_km_sum_min,
min(avg_discount) as avg_discount_min from air_data_base ;
=============================================================================================
5. hive -f create_sum_yr_1_not_null.hql 丢弃票价为空的记录
use air;
create table sum_yr_1_not_null as select * from air_data_base where sum_yr_1 is not null ;
=============================================================================================
6. hive -f create_avg_discount_not_0.hql 丢弃平均折扣率为0.0的记录
use air;
create table avg_discount_not_0 as select * from sum_yr_1_not_null where avg_discount <> 0.0 ;
==============================================================================================
7. hive -f create_sum_0_seg_avg_not_0.hql 丢弃票价为0、平均折扣率不为0、总飞行公里数大于0的记录。
use air;
create table sum_0_seg_avg_not_0 as select * from avg_discount_not_0 where !(sum_yr_1 = 0 and avg_discount <> 0.0 and seg_km_sum <> 0);
==============================================================================================
属性规约
原始数据中属性太多,根据航空公司客户价值LRFMC模型,选择LRFMC指标相关的6个属性: FFP_DATE, LOAD_TIME, FLIGHT_COUNT, AVG_DISCOUNT, SEG_KM_SUM, LAST_TO_END。删除与其不相关、弱相关或冗余的属性,例如,会员卡号、性别、工作地城市、工作地所在省份、工作地所在国家和年龄等属性。经属性规约之后的数据集只有6列。
shu行gou
8. hive -f create_flfasl.hql 属性规约use air;
create table flfasl as select FFP_DATE,LOAD_TIME,FLIGHT_COUNT,AVG_DISCOUNT,SEG_KM_SUM,LAST_TO_END from sum_0_seg_avg_not_0 ;
==============================================================================================
数据变换
是将数据转换成“适当的”格式,以适应挖掘任务及算法的需要。本案例中主要采用的数据变换方式为属性构造和数据标准化。
由于原始数据中并没有直接给出LRFMC五个指标,需要通过原始数据提取这五个指标,具体的计算方式如下。
1)L:客户关系长度 = LOAD_TIME -FFP_DATE
会员入会时间距观测窗口结束的月数 = 观测窗口的结束时间 - 入会时间【单位:月】
2)R:消费时间间隔 = LAST_TO_END
客户最近一次乘坐公司飞机距观测窗口结束的月数 = 最后一次乘机时间至观察窗口末端时长【单位:月】
3F:消费频率 = FLIGHT_COUNT
客户在观测窗口内乘坐公司飞机的次数 = 观测窗口的飞行次数【单位:次】
M:飞行里程 = SEG_KM_SUM
客户在观测窗口内累计的飞行里程 = 观测窗口的总飞行公里数【单位:公里】
C:折扣系数的平均值 = AVG_DISCOUNT
客户在观测窗口内乘坐舱位所对应的折扣系数的平均值 = 平均折扣率【单位:无】
9. hive -f create_lrfmc.hql 数据变换
round((unix_timestamp(LOAD_TIME,'yyyyMMdd')-unix_timestamp(FFP_DATE,'yyyyMMdd'))/FLIGHT_COUNT as f,
SEG_KM_SUM as m,
round(AVG_DISCOUNT,2) as c
from flfasl ;
===============================================================================================
10.hive -f create_max_min.hql 指标取值范围
use air;
create table max_min as
select max(l),min(l),max(r),min(r),max(f),min(f),max(m),min(m),max(c),min(c) from lrfmc;