基于聚类算法完成航空公司客户价值分析任务

简介: 基于聚类算法完成航空公司客户价值分析任务

一、基于聚类算法完成航空公司客户价值分析任务

1、✌ 任务描述

1、借助航空公司数据,对客户进行分类

2、对不同类别的客户进行特征分析,比较不同类别客户的价值

3、对不同价值的客户进行个性化服务,指定相应的营销策略

2、✌ 数据集

其中数据中包括62988个客户样本,44种属性,数据下载地址

2.1 ✌ 数据集中字段含义

3、✌ 方法

基于聚类算法完成航空客户分析任务主要流程有:数据预处理、模型训练与对数据的预测、分析与决策。详细步骤见下图。

3.1 ✌ 数据预处理

首先导入一些所需模块

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import sklearn.preprocessing
import sklearn.cluster

读取数据,数据是以CSV文件的形式存储的,每行代表一个客户,每列代表一个属性字段。

air_data=pd.read_csv('air_data.csv')
air_data.shape

观察前5条数据

air_data.head(5)

展示每列数据的类型,object代表文本,int64代表整数,float64代表浮点数,bool类型代表布尔值

air_data.dtypes

观察每列数据的具体描述,只适用于数值型变量

air_data.describe().T

去除重复数据

air_data=air_data.drop_duplicates()

观察数据是否有缺失值

air_data.isnull().sum()

3.2 ✌ 特征工程
3.2.1 ✌ RFM模型

我们需要根据给定的44个属性来对客户价值进行价值分析,也就是对不同的客户进行分类,特别地,对于客户价值分析的一个经典模型是 RFM 模型。

  • Recency: 最近消费时间间隔。
  • Frequency: 客户消费频率。
  • Monetary Value: 客户总消费金额。
    使用 RFM 模型主要根据其中的RFM三个特征来对用户进行分析,将客户群体细分为重要保持客户、重要发展客户、重要挽留客户、一般客户、低价值客户五类。
3.2.2 ✌ 变体-LRFMC模型

考虑到商用航空行业与一般商业形态的不同,国内外航空公司在RFM模型的基础上,还加上了 L 客户关系时长以及 C 客户所享受的平均折扣率这两个特征用于客户分群与价值分析,得到航空行业的LRFMC模型:

  • Length of Relationship: 客户关系时长,反映可能的活跃时长。
  • Recency: 最近消费时间间隔,反映当前的活跃状态。
  • Frequency: 客户消费频率,反映客户的忠诚度。
  • Mileage: 客户总飞行里程,反映客户对乘机的依赖性。
  • Coefficient of Discount: 客户所享受的平均折扣率,侧面反映客户价值高低。
load_time = datetime.datetime.strptime('2014/03/31', '%Y/%m/%d')
ffp_dates = [datetime.datetime.strptime(ffp_date, '%Y/%m/%d') for ffp_date in air_data['FFP_DATE']]
length_of_relationship = [(load_time - ffp_date).days for ffp_date in ffp_dates]
air_data['LEN_REL'] = length_of_relationship

模型只需要这几列

features = ['LEN_REL','FLIGHT_COUNT','avg_discount','SEG_KM_SUM','LAST_TO_END']
data = air_data[features]
features = ['L','F','C','M','R']
data.columns = features

观察前5行数据

display(data.head())
display(data.describe().T)

3.2.3 ✌ 标准化

对特征进行标准化,是各列的均值为0、方差为1

data=(data.mean(axis=0))/(data.std(axis=0))
ss = sklearn.preprocessing.StandardScaler(with_mean=True, with_std=True)#标准化
data = ss.fit_transform(data) #数据转换
data = pd.DataFrame(data, columns=features)
data_db = data.copy()

3.3 ✌ 模型训练与对数据的预测

我们想要将将客户群体细分为重要保持客户、重要发展客户、重要挽留客户、一般客户、低价值客户五类,

于是我们可以用 k-means 聚类算法进行聚类,类别的数量可以人为控制。

前面我们已经通过数据处理得到了我们 LRFMC 模型需要的特征,接下来就使用 k-means 聚类算法来分析数据。

这里我们使用机器学习库 scikit-learn 中现有的 kmeans 函数的实现。

3.3.1 ✌ KMeans聚类算法

将目标样本分为5个群体

from sklearn.cluster import KMeans
data=KMeans(n_clusters=5).fit(data)

查看模型学习出来的5个群体中心,以及5个群体所包含的样本总数。

r1 = pd.Series(km.labels_).value_counts()
r2 = pd.DataFrame(km.cluster_centers_)
r = pd.concat([r2, r1], axis=1)
r.columns = list(data.columns) + ['counts']
r

查看每个样本预测的群体的标签

kms.labels_

3.4 ✌ 尝试使用RFM模型
data_rfm=data[['R','F','M']]
data_rfm.head()

kms.fit(data_rfm)
kms.labels_

r1 = pd.Series(km.labels_).value_counts()
r2 = pd.DataFrame(km.cluster_centers_)
rr = pd.concat([r2, r1], axis=1)
rr = pd.DataFrame(ss.fit_transform(rr) )
rr.columns = list(data_rfm.columns) + ['counts']
rr

3.5 ✌ DBSCAN模型对LCRFM特征进行计算

除了Kmeans聚类算法外,我们还可以使用DBSCAN等聚类算法进行建模。

from sklearn.cluster import DBSCAN
# db = DBSCAN(eps=10,min_samples=2).fit(data_db)
# Kagging debug
db = DBSCAN(eps=10,min_samples=2).fit(data_db.sample(10000))
DBSCAN_labels = db.labels_

3.9 ✌ 根据LCRFM结果进行分析

我们这里是对Kmeans算法使用LCRFM模型进行分析:

对应实际业务对聚类结果进行分值离散转化,对应1-5分,其中属性值越大,分数越高:

(1)✌ 重要保持客户

平均折扣率高(C↑),最近有乘机记录(R↓),乘机次数高(F↑)或里程高(M↑):

这类客户机票票价高,不在意机票折扣,经常乘机,是最理想的客户类型。

公司应优先将资源投放到他们身上,维持这类客户的忠诚度。

(2)✌ 重要发展客户

平均折扣率高(C↑),最近有乘机记录(R↓),乘机次数低(F↓)或里程低(M↓):

这类客户机票票价高,不在意机票折扣,最近有乘机记录,但总里程低,具有很大的发展潜力。

公司应加强这类客户的满意度,使他们逐渐成为忠诚客户。

(3)✌ 重要挽留客户

平均折扣率高(C↑),乘机次数高(F↑)或里程高(M↑),最近无乘机记录(R↑):

这类客户总里程高,但较长时间没有乘机,可能处于流失状态。

公司应加强与这类客户的互动,召回用户,延长客户的生命周期。

(4)✌ 一般客户

平均折扣率低(C↓),最近无乘机记录(R↑),乘机次数高(F↓)或里程高(M↓),入会时间短(L↓):

这类客户机票票价低,经常买折扣机票,最近无乘机记录,可能是趁着折扣而选择购买,对品牌无忠诚度。

公司需要在资源支持的情况下强化对这类客户的联系。

(5)✌ 低价值客户

平均折扣率低(C↓),最近无乘机记录(R↑),乘机次数高(F↓)或里程高(M↓),入会时间短(L↓):

这类客户与一般客户类似,机票票价低,经常买折扣机票,最近无乘机记录,可能是趁着折扣而选择购买,对品牌无忠诚度。

✌ 结果分析

  • 群体1的L属性最大
  • 群体2的L、C属性最小
  • 群体3的C属性上最大
  • 群体4的M、F属性属性最大,R属性最小
  • 群体5的R属性最大,F、M属性最小
  • 其中每项指标的实际业务意义为:
  • L:加入会员的时长。越大代表会员资历越久
  • R:最近一次乘机时间。越大代表越久没乘机
  • F:乘机次数。越大代表乘机次数越多
  • M:飞行总里程。越大代表总里程越多
  • C:平均折扣率。越大代表折扣越弱,0表示0折免费机票,10代表无折机票
  • 重要保持客户:客户群4
  • 重要发展客户:客户群3
  • 重要挽留客户:客户群1
  • 一般客户:客户群2
  • 低价值客户:客户群5

✌ 决策

重要发展客户、重要保持客户、重要挽留客户这三类客户其实也对应着客户生命周期中的发展期、稳定器、衰退期三个时期。从客户生命周期的角度讲,也应重点投入资源召回衰退期的客户。

一般而言,数据分析最终的目的是针对分析结果提出并开展一系列的运营/营销策略,以期帮助企业发展。在本实例中,运营策略有三个方向:

提高活跃度:提高一般客户、低价值客户的活跃度。将其转化为优质客户

提高留存率:与重要挽留客户互动,提高这部分用户的留存率

提高付费率:维系重要保持客户、重要发展客户的忠诚度,保持企业良好收入

每个方向对应不同的策略,如会员升级、积分兑换、交叉销售、发放折扣券等手段,此处不再展开。


目录
相关文章
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
63 4
|
21天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
2月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
2月前
|
算法 数据挖掘
基于粒子群优化算法的图象聚类识别matlab仿真
该程序基于粒子群优化(PSO)算法实现图像聚类识别,能识别0~9的数字图片。在MATLAB2017B环境下运行,通过特征提取、PSO优化找到最佳聚类中心,提高识别准确性。PSO模拟鸟群捕食行为,通过粒子间的协作优化搜索过程。程序包括图片读取、特征提取、聚类分析及结果展示等步骤,实现了高效的图像识别。
|
2月前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法
PID算法原理分析及优化
【10月更文挑战第6天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法 安全 Go
Python与Go语言中的哈希算法实现及对比分析
Python与Go语言中的哈希算法实现及对比分析
41 0
|
2月前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
1天前
|
算法
基于大爆炸优化算法的PID控制器参数寻优matlab仿真
本研究基于大爆炸优化算法对PID控制器参数进行寻优,并通过Matlab仿真对比优化前后PID控制效果。使用MATLAB2022a实现核心程序,展示了算法迭代过程及最优PID参数的求解。大爆炸优化算法通过模拟宇宙大爆炸和大收缩过程,在搜索空间中迭代寻找全局最优解,特别适用于PID参数优化,提升控制系统性能。
|
13天前
|
算法 数据安全/隐私保护 索引
OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
本项目展示了在MATLAB 2022a环境下,通过选择映射(SLM)与相位截断星座图(PTS)技术有效降低OFDM系统中PAPR的算法实现。包括无水印的算法运行效果预览、核心程序及详尽的中文注释,附带操作步骤视频,适合研究与教学使用。