表1-1 指标含义
模型 | L | R | F | M | C |
---|---|---|---|---|---|
航空公司LRFMC模型 | 会员入会时间距观测窗口结束的月数 | 客户最近一次乘坐公司飞机距观测窗口结束的月数 | 客户在观测窗口内乘坐公司飞机的次数 | 客户在观测窗口内累计的飞行里程 | 客户在观测窗口内乘坐舱位所对应的折扣系数的平均值 |
针对航空公司LRFMC模型,如果采用传统RFM模型分析的属性分箱方法,如图所示(它是依据属性的平均值进行划分,其中大于平均值的表示为↑,小于平均值的表示为↓),虽然也能够识别出最有价值的客户,但是细分的客户群太多,提高了针对性营销的成本。因此,本案例采用聚类的方法识别客户价值。通过对航空公司客户价值的LRFMC五个指标进行K-Means聚类,识别出最有价值客户。
本案例航空客户价值分析的总体流程如图所示:
实施过程
本案例数据集共计62988条,以下是字段说明:
字段名称 | 字段说明 | 备注 | |
---|---|---|---|
MEMBER_NO | 会员卡号 |
| |
FFP_DATE | 入会时间 | 办理会员卡的开始的时间 | |
FIRST_FLIGHT_DATE | 第一次飞行日期 | ||
GENDER | 性别 |
| |
FFP_TIER | 会员卡级别 |
| |
WORK_CITY | 工作地城市 | ||
WORK_PROVINCE | 工作地所在省份 | ||
WORK_COUNTRY | 工作地所在国家 | ||
AGE | 年龄 | ||
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 | 观察窗口内最大乘机间隔 | ||
ADD_POINTS_SUM_YR_1 | 观测窗口中第1年其他积分(合作伙伴、促销、外航转入等) | ||
ADD_POINTS_SUM_YR_2 | 观测窗口中第2年其他积分(合作伙伴、促销、外航转入等) |
| |
EXCHANGE_COUNT | 积分兑换次数 |
| |
avg_discount | 平均折扣率 |
| |
P1Y_Flight_Count | 第1年乘机次数 | ||
L1Y_Flight_Count | 第2年乘机次数 | ||
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_L1Y_Flight_Count | 第2年的乘机次数比率 |
| |
Ration_P1Y_Flight_Count | 第1年的乘机次数比率 |
| |
Ration_P1Y_BPS | 第1年里程积分占最近两年积分比例 |
| |
Ration_L1Y_BPS | 第2年里程积分占最近两年积分比例 | ||
Point_NotFlight | 非乘机的积分变动次数 |
数据接入
在实验中添加 数据源 节点,将航空公司客户数据读取进来,部分数据如图所示:
为了便于理解字段含义,让字段看起来更加直观,使用 元数据编辑 节点,添加中文字段别名,更改后的输出结果如下:
流程图如图所示:
数据探索
本案例的探索分析是对数据进行缺失值分析与异常值分析,分析出数据的规律以及异常值。通过对数据观察发现原始数据中存在票价为空值,票价最小值为0、折扣率最小值为0、总飞行公里数大于0的记录。票价为空值的数据可能是客户不存在乘机记录造成。其它的数据可能是客户乘坐0折机票或者积分兑换造成。
为了查看整个数据集数值型数据的情况,我们接入一个 全表统计 节点,选中所有数值型字段。
输出结果如图所示,可以看到部分数据(年龄、第一年总票价、第二年总票价)存在缺失值。
数据预处理
本案例主要采用数据清洗、数据规约与数据变换的预处理方法。
数据清洗
通过数据探索分析,发现数据中存在缺失值,票价最小值为0、折扣率最小值为0、总飞行公里数大于0的记录。由于原始数据量大,这类数据所占比例较小,对于问题影响不大,因此对其进行丢弃处理。具体处理方法如下:
- 丢弃票价为空的情况。
- 丢弃票价为0、平均折扣率不为0、总飞行公里数大于0的记录。
使用 空值处理 节点,删除票价为空值的行,选择列如图:
空值处理节点参数空值处理方式选择“过滤整行”。
使用 行选择 节点,保留总票价不为0或者观测光口总飞行公里数和平均折扣率同时为0的情况,根据条件筛选如图所示:
数据规约
原始数据中属性太多,根据航空公司客户价值LRFMC模型,选择与LRFMC指标相关的六个属性:FFP原始数据中属性太多,根据航空公司客户价值LRFMC模型,选择与LRFMC指标相关的七个属性:FFP_DATE(入会时间)、LOAD_TIME(观测窗口的结束时间)、FLIGHT_COUNT(观测窗口内的飞行次数)、AVG_DISCOUNT(平均折扣率)、SEG_KM_SUM(观测窗口总飞行公里数)、LAST_SUM(观测窗口总飞行公里数)、LAST_FLIGHT_DATE(末次飞行日期)、LAST_TO_END(最后一次乘机时间至观察窗口末端时长)。删除与其不相关、弱相关或冗余的属性,例如:会员卡号、性别、工作地城市、工作地所在省份、工作地所在国家、年龄等属性。
使用 列选择 节点,选择需要的属性列如图所示:
经过属性选择后的数据集如下:
数据变换
为了方便后续的日期处理,字符串类型的字段FFP_DATE(入会时间)和LOAD_TIME(观测窗口的结束时间)格式化成指定的日期格式(yyyy/MM/dd),加入一个 派生列 节点完成此项操作,参数派生列配置如图:
由于原始数据中并没有直接给出LRFMC五个指标,需要通过原始数据提取这五个指标,具体的计算方式如下:
- n L = LOAD_TIME - FFP_DATE:会员入会时间距观测窗口结束的月数 = 观测窗口的结束时间 - 入会时间[单位:月]。
- n R = LAST_TO_END:客户最近一次乘坐公司飞机距观测窗口结束的月数 = 最后一次乘机时间至观察窗口末端时长[单位:月]。
- n F = FLIGHT_COUNT:客户在观测窗口内乘坐公司飞机的次数 = 观测窗口的飞行次数[单位:次]。
- n M = SEG_KM_SUM:客户在观测时间内在公司累计的飞行里程 = 观测窗口总飞行公里数[单位:公里]。
- n C = AVG_DISCOUNT:客户在观测时间内乘坐舱位所对应的折扣系数的平均值 = 平均折扣率[单位:无]。
通过派生列节点对数据进行提取,该节点的派生列配置,表达式如下:
指标 | 表达式 |
---|---|
L | DATEDIFF([观测窗口的结束时间00],[入会时间00])/30 |
R | [最后一次乘机时间至观察窗口末端时长]/30 |
F | [观测窗口内的飞行次数] |
M | [观测窗口总飞行公里数] |
C | [平均折扣率] |
整个派生列配置如图:
输出结果显示了指标数值分布情况:
五个指标的数据提取后,对每个指标数据分布情况进行分析,接入一个 全表统计 节点查看一下指标数值的分布情况,其数据的取值范围如上图所示。从表中数据可以发现,五个指标的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据进行标准化处理。接入一个 PYTHON脚本 节点,通过属性修改名称为标准化处理,脚本代码如下图所示:
预处理流程图
整个预处理流程图如下:
建立模型
客户价值分析模型构建主要由两个部分构成,第一个部分根据航空公司客户五个指标的数据,对客户作聚类分群。第二部分结合业务对每个客户群进行特征分析,分析其客户价值,并对每个客户群进行排名。
客户聚类
采用 K均值 算法对客户数据进行客户分群,聚成五类(需要结合业务的理解与分析来确定客户的类别数量)。
利用K均值算法进行客户分群的流程如图,聚类类别数为k=5。
接入 特征选择 节点,选择需要做聚类的特征列:
接入 K均值 算法节点,参数配置如图,K值取值为5,迭代次数填写50。
最后接入 聚类训练 节点,实现模型的训练。
训练完成后,对聚类结果做进一步分析,接入 聚类系数 节点,输出各类别的聚类系数指标,如图:
为了想统计分类的分布数量情况,我们接入一个 聚合 节点,对各分类的样本数量进行统计,输出如图:
客户价值
将聚类的结果利用Smartbi自助仪表盘进行分析,得到客户群特征分析图,预测有 0、1 、2 、3 、4五种类别。通过 聚合 节点对每个类别的L、R、F、M、C进行统计,求取均值以及每类总数量,如表2-3所示。
表2-3 客户群特征描述表
群类别 | 会员入会时间距观测窗口结束的月数(L) | 客户最近一次乘坐公司飞机距观测窗口结束的月数(R) | 客户在观测窗口内乘坐公司飞机的次数(F) | 客户在观测时间内在公司累计的飞行里程(M) | 客户在观测时间内乘坐舱位所对应的折扣系数的平均值(C) | 数量 |
---|---|---|---|---|---|---|
0 | 82.26 | 3.50 | 10.67 | 15191 | 0.70 | 15986 |
1 | 53.79 | 5.47 | 9.98 | 14654 | 1.19 | 3182 |
2 | 63.23 | 0.92 | 47.04 | 68391 | 0.78 | 5315 |
3 | 40.74 | 15.89 | 3.88 | 6002 | 0.70 | 12342 |
4 | 29.89 | 3.27 | 9.62 | 13785 | 0.68 | 25219 |
本案例定义五个等级的客户类别:重要保持客户、重要发展客户、重要挽留客户、一般客户、低价值客户。他们之间的区别如图2-21所示,其中每种客户类别的特征如下:
- 重要保持客户:这类客户的平均折扣率(C)较高(一般所乘航班的舱位等级较高),最近乘坐过本公司航班(R)低,乘坐的次数(F)或里程(M)较高。他们是航空公司的高价值客户,是最为理想的客户类型,对航空公司的贡献最大,所占比例却较小。航空公司应该优先将资源投放到他们身上,对他们进行差异化管理和一对一营销,提高这类客户的忠诚度与满意度,尽可能延长这类客户的高水平消费。
- 重要发展客户:这类客户的平均折扣率(C)较高,最近乘坐过本公司航班(R)低,但乘坐次数(F)或乘坐里程(M)较低。这类客户入会时长(L)短,他们是航空公司的潜在价值客户。虽然这类客户的当前价值并不是很高,但却有很大的发展潜力。航空公司要努力促使这类客户增加在本公司的乘机消费和合作伙伴处的消费,也就是增加客户的钱包份额。通过客户价值的提升,加强这类客户的满意度,提高他们转向竞争对手的转移成本,使他们逐渐成为公司的忠诚客户。
- 重要挽留客户:这类客户过去所乘航班的平均折扣率(C)、乘坐次数(F)或者里程(M)较高,但是较长时间已经没有乘坐本公司的航班(R)高或是乘坐频率变小。他们客户价值变化的不确定性很高。由于这些客户衰退的原因各不相同,所以掌握客户的最新信息、维持与客户的互动就显得尤为重要。航空公司应该根据这些客户的最近消费时间、消费次数的变化情况,推测客户消费的异动状况,并列出客户名单,对其重点联系,采取一定的营销手段,延长客户的生命周期。
- 一般与低价值客户:这类客户所乘航班的平均折扣率(C)很低,较长时间没有乘坐过本公司航班(R)高,乘坐的次数(F)或里程(M)较低,入会时长(L)短。他们是航空公司的一般用户与低价值客户,可能是在航空公司机票打折促销时,才会乘坐本公司航班。
其中,重要发展客户、重要保持客户、重要挽留客户这三类重要客户分别可以归入客户生命周期管理的发展期、稳定期、衰退期三个阶段。
根据每种客户类型的特征,对各类客户群进行客户价值排名,其结果如表2-4所示。针对不同类型的客户群提供不同的产品和服务,提升重要发展客户的价值、稳定和延长重要保持客户的高水平消费、防范重要挽留客户的流失并积极进行关系恢复。
表2-4 客户群价值排名
客户群 | 排名 | 排名含义 |
---|---|---|
0 | 3 | 重要挽留用户 |
1 | 1 | 一般用户 |
2 | 2 | 重要保持客户 |
3 | 5 | 低价值客户 |
4 | 4 | 重要发展客户 |
本模型采用历史数据进行建模,随着时间的变化,分析数据的观测窗口也在变换。因此,对于新增客户详细信息,考虑业务的实际情况,该模型建议每一个月运行一次,对其新增客户信息通过聚类中心进行判断,同时对本次新增客户的特征进行分析。如果增量数据的实际情况与判断结果差异大,需要业务部门重点关注,查看变化大的原因以及确认模型的稳定性。如果模型稳定性变化大,需要重新训练模型进行调整。目前模型进行重新训练的时间没有统一标准,大部分情况都是根据经验来决定。根据经验建议:每隔半年训练一次模型比较合适。
模型应用
根据对各个客户群进行特征分析,采取下面的一些营销手段和策略,为航空公司的价值客户群管理提供参考。
(1)会员的升级与保级
航空公司的会员可以分为白金卡会员、金卡会员、银卡会员、普通卡会员,其中非普通卡会员可以统称为航空公司的精英会员。虽然各个航空公司都有自己的特点和规定,但会员制的管理方法是大同小异的。成为精英会员一般都是要求在一定时间内(如一年)积累一定的飞行里程或航段,达到这种要求后就会在有效期内(通常为两年)成为精英会员,并享受相应的高级别服务。有效期快结束时,根据相关评价方法确定客户是否有资格继续作为精英会员,然后对该客户进行相应地升级或降级。
然而,由于许多客户并没有意识到或根本不了解会员升级或保级的时间与要求(相关的文件说明往往复杂且不易理解),经常在评价期过后才发现自己其实只差一点就可以实现升级或保级,却错过了机会,使之前的里程积累白白损失。同时,这种认知还可能导致客户的不满,干脆放弃在本公司的消费。
因此,航空公司可以在对会员升级或保级进行评价的时间点之前,对那些接近但尚未达到要求的较高消费客户进行适当提醒甚至采取一些促销活动,刺激他们通过消费达到相应标准。这样既可以获得收益,同时也提高了客户的满意度,增加了公司的精英会员。
(2)首次兑换
航空公司常旅客计划中最能够吸引客户的内容就是客户可以通过消费积累的里程来兑换免票或免费升舱等。各个航空公司都有一个首次兑换标准,也就是当客户的里程或航段积累到一定程度时才可以实现第一次兑换,这个标准会高于正常的里程兑换标准。但是很多公司的里程积累随着时间会进行一定地削减,例如有的公司会在年末对该年积累的里程进行折半处理。这样会导致许多不了解情况的会员白白损失自己好不容易积累的里程,甚至总是难以实现首次兑换。同样,这也会引起客户的不满或流失。可以采取的措施是从数据库中提取出接近但尚未达到首次兑换标准的会员,对他们进行提醒或促销,使他们通过消费达到标准。一旦实现了首次兑换,客户在本公司进行再次消费兑换就比在其他公司进行兑换要容易许多,在一定程度上等于提高了转移的成本。另外,在一些特殊的时间点(如里程折半的时间点)之前可以给客户一些提醒,这样可以增加客户的满意度。
(3)交叉销售
通过发行联名卡等与非航空类企业的合作,使客户在其他企业的消费过程中获得本公司的积分,增强与公司的联系,提高他们的忠诚度。如可以查看重要客户在非航空类合作伙伴处的里程积累情况,找出他们习惯的里程积累方式(是否经常在合作伙伴处消费、更喜欢消费哪些类型合作伙伴的产品),对他们进行相应促销。
客户识别期和发展期为客户关系打下基石,但是这两个时期带来的客户关系是短暂的、不稳定的。企业要获取长期的利润,必须具有稳定的、高质量的客户。保持客户对于企业是至关重要的,不仅因为争取一个新客户的成本远远高于维持老客户的成本,更重要的是客户流失会造成公司收益的直接损失。因此,在这一时期,航空公司应该努力维系客户关系水平,使之处于较高的水准,最大化生命周期内公司与客户的互动价值,并使这样的高水平尽可能延长。 对于这一阶段的客户,主要应该通过提供优质的服务产品和提高服务水平来提高客户的满意度。通过对常旅客数据库的数据挖掘、进行客户细分,可以获得重要保持客户的名单。这类客户一般所乘航班的平均折扣率(C)较高,最近乘坐过本公司航班(R 低),乘坐的频率(F)或里程(M)也较高。他们是航空公司的价值客户,是最为理想的客户类型,对航空公司的贡献最大,所占比例却比较小。航空公司应该优先将资源投放到他们身上,对他们进行差异化管理和一对一营销,提高这类客户的忠诚度与满意度,尽可能延长这类客户的高水平消费。
总结
本案例主要参考《Python数据分析与挖掘实战》一书。本案例主要针对客户价值进行分析,通过对航空公司客户价值的LRFMC五个指标进行K-Means聚类,识别出最有价值客户。将指标聚集成五个等级的客户类别:重要保持客户、重要发展客户、重要挽留客户、一般客户、低价值客户。根据对各个客户群进行特征分析,采取下面的一些营销手段和策略,为航空公司的价值客户群管理提供参考。