文章目录
研究生期间读了一些关于客户生命周期价值(customer lifetime value,CLV)的一些文章,对此颇感兴趣,正好最近看到一个关于航空公司客户价值分析的案例,写一篇博客记录一下。
1. 数据挖掘的目标
面对激烈的市场竞争,各个航空公司相继推出了很多优惠的营销方案来吸引客户。某航空公司面临着常旅客流失、竞争力下降和航空资源未充分利用等经营危机。通过建立合理的客户价值评估模型,对客户进行分类,分析比较不同客户群体的价值,并制定相应的营销策略,对不同的客户群提供个性化的客户服务是必要的。因此本项目的目标是:
- 借助航空公司客户数据,对客户进行分类。
- 对不同的客户类别进行特征分析,比较不同类别的客户的价值。
- 针对不同价值的客户类别制定相应的营销策略,为其提供个性化服务。
2. 分析过程与方法
“以客户为中心”是企业的业务模式,然而维护客户关系需要高昂的成本,追求利润最大化的企业不可能和每一个客户都保持同样的关系。客户营销战略的倡导者 Jay & Adam Curry 提炼出了如下的经验:
- 公司收入的80%来自顶端的20%的客户。
- 20%的客户其利润率为100%。
- 90%以上的收入来自现有客户。
- 大部分的营销预算经常被用在非现有客户上。
- 5%至30%的客户在客户金字塔中具有升级潜力。
- 客户金字塔中客户升级2%,意味着销售收入增加10%,利润增加50%。
经验不一定正确,但说明了对客户价值进行分析的重要性和必要性。在客户价值分析领域,最具影响力并得到实证检验的理论与模型有:客户终生价值理论、客户价值金字塔模型、策略评估矩阵分析法和RFM客户价值分析模型等。
2.1 分析步骤与流程
航空公司客户价值分析案例的总流程如图所示,主要包括以下 4 个步骤:
1)抽取航空公司2012年4月1日至2014年3月31日的数据。
2)对抽取的数据进行数据探索分析与预处理,包括数据缺失值与异常值的探索分析、数据清洗、特征构建、标准化等操作。
3)基于 RFM 模型,使用 K-Means 算法进行客户分群。
4)针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化服务。
2.2 数据探索分析
2.2.1 描述性统计
数据的基本字段有 44 个,分别是:
客户基本信息 - 9:
MEMBER_NO 会员卡号
FFP_DATE 入会时间
FIRST_FLIGHT_DATE 第一次飞行日期
GENDER 性别
FFP_TIER 会员卡级别
WORK_CITY 工作地城市
WORK_PROVINCE 工作地所在省份你
WORK_COUNTRY 工作地所在国家
AGE 年龄
乘机信息 - 21:
LOAD_TIME 观测窗口的结束时间
FLIGHT_COUNT 飞行次数
BP_SUM 观测窗口总基本积分
EP_SUM_YR_1 第一年精英资格积分
EP_SUM_YR_2 第二年精英资格积分
SUM_YR_1 第一年总票价
SUM_YR_2 第二年总票价
SEG_KM_SUM 观测窗口总飞行公里数
WEIGHTED_SEG_KM 观测窗口总加权飞行公里数(Σ舱位折扣×航段距离)
LAST_FLIGHT_DATE 末次飞行日期
AVG_FLIGHT_COUNT 观测窗口季度平均飞行次数
AVG_BP_SUM 观测窗口季度平均基本积分累积
BEGIN_TO_FIRST 观察窗口内第一次乘机时间至MAX(观察窗口始端,入会时间)时长
LAST_TO_END 最后一次乘机时间至观察窗口末端时长
AVG_INTERVAL 平均乘机时间间隔
MAX_INTERVAL 观察窗口内最大乘机间隔
AVG_DISCOUNT 平均折扣率
P1Y_Flight_Count 第1年乘机次数
L1Y_Flight_Count 第2年乘机次数
Ration_L1Y_Flight_Count 第2年的乘机次数比率
Ration_P1Y_Flight_Count 第1年的乘机次数比率
积分信息 - 14:
ADD_POINTS_SUM_YR_1 观测窗口中第1年其他积分(合作伙伴、促销、外航转入等)
ADD_POINTS_SUM_YR_2 观测窗口中第2年其他积分(合作伙伴、促销、外航转入等)
EXCHANGE_COUNT 积分兑换次数
P1Y_BP_SUM 第1年里程积分
L1Y_BP_SUM 第2年里程积分
EP_SUM 观测窗口总精英积分
ADD_Point_SUM 观测窗口中其他积分(合作伙伴、促销、外航转入等)
Eli_Add_Point_Sum 非乘机积分总和
L1Y_ELi_Add_Points 第2年非乘机积分总和
Points_Sum 总累计积分
L1Y_Points_Sum 第2年观测窗口总累计积分
Ration_P1Y_BPS 第1年里程积分占最近两年积分比例
Ration_L1Y_BPS 第2年里程积分占最近两年积分比例
Point_NotFlight 非乘机的积分变动次数
对属性观测值中的空缺值个数、最大值和最小值进行探索。代码如下:
import pandas as pd
datafile = 'air_data.csv'
data = pd.read_csv(datafile,