【机器学习项目实战10例】(六):基于聚类算法完成航空公司客户价值分析任务

简介: 【机器学习项目实战10例】(六):基于聚类算法完成航空公司客户价值分析任务

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

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天前
|
机器学习/深度学习 存储 人工智能
【人工智能】机器学习算法综述及常见算法详解
【人工智能】机器学习算法综述及常见算法详解
|
4天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
5天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
28 7
|
5天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
|
8天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
10天前
|
机器学习/深度学习 算法 数据可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
|
10天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
10天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
|
10天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
10天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。

热门文章

最新文章