hadoop学习---基于hive的航空公司客户价值的LRFCM模型案例

server/2025/1/16 1:54:03/

案例需求:

RFM模型的复习

       在客户分类中,RFM模型是一个经典的分类模型,模型利用通用交易环节中最核心的三个维度——最近消费(Recency)、消费频率(Frequency)、消费金额(Monetary)细分客户群体,从而分析不同群体的客户价值。在某些商业形态中,客户与企业产生连接的核心指标会因产品特性而改变。如互联网产品中,以上三项指标可以相应地变为下图中的三项:最近一次登录、登录频率、在线时长

商用航空行业LRFCM模型的推广:

我们说RFM模型由R(最近消费时间间隔)、F(消费频次)和M(消费总额)三个指标构成,通过该模型识别出高价值客户。但该模型并不完全适合所有行业,如航空行业,直接使用M指标并不能反映客户的真实价值,因为“长途低等舱”可能没有“短途高等舱”价值高。考虑到商用航空行业与一般商业形态的不同,决定在RFM模型的基础上,增加2个指标用于客户分群与价值分析,得到航空行业的LRFMC模型:

L:客户关系长度。客户加入会员的日期至观测窗口结束日期的间隔。(反映可能的活跃时长)

R:最近一次乘机时间。最近一次乘机日期至观测窗口结束日期的间隔。(反映当前的活跃状态)

F:乘机频率。客户在观测窗口期内乘坐飞机的次数。(反映客户的忠诚度)

M:飞行总里程。客户在观测窗口期内的飞行总里程。(反映客户对乘机的依赖性)

C:平均折扣率。客户在观测窗口期内的平均折扣率。(舱位等级对应的折扣系数,侧面反映客户价值高低)

-------------------------------------本次练习基于数据源提取上述五个指标分析航空客户商业价值。

数据源:数据源

数据指标说明:

 Hive操作:

 构建数据库表:

reate database air_data_base;
use air_data_base;
create table air_data_table(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,1y_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 ',';

 将数据源上传到Linux本地文件夹中,再从本地上传到hive数据库中:

load data local inpath '/home/hadoop/air_data.csv' overwrite into table air_data_table;
select * from air_data_table limit 20;

统计观测窗口的票价收入(SUM_YR_1)、观测窗口的总飞行公里数(SEG_KM_SUM)、
平均折扣率(AVG_DISCOUNT)三个字段的空值记录,并将结果保存到名为sum_seg_avg_null的表中:

create table sum_seg_avg_null as select * from
(select count(*) as sum_yr_1_null_count from air_data_table where sum_yr_1 is null) sum_yr_1,
(select count(*) as seg_km_sum_null from air_data_table where seg_km_sum is null) seg_km_sum,
(select count(*) as avg_discount_null from air_data_table where avg_discount is null) avg_discount;

统计观测窗口的SUM_YR_1(票价收入)、SEG_KM_SUM(总飞行公里数)、AVG_DISCOUNT(平均折扣率)三列的最小值sum_seg_avg_min表中:

create table sum_seg_avg_min as select
min(sum_yr_1) as sum_yr_1,
min(seg_km_sum) as seg_km_sum,
min(avg_discount) as avg_discount
from air_data_table;

 数据清洗:

过滤掉票价为空的记录、平均折扣率为0.0的记录、票价为0、平均折扣率不为0、总飞行公里数大于0的记录。

create table sas_not_0 as
select * from air_data_table
where sum_yr_1 is not null andavg_discount <> 0    andseg_km_sum > 0;

提取有用数据项:

create table flfasl as select ffp_date,load_time,flight_count,avg_discount,seg_km_sum,last_to_end from sas_not_0;
select * from flfasl limit 10;

 

--L的构造:会员入会时间距离观测窗口结束的月数 = 观测窗口的结束时间 - 入会时间 [单位:月]
--R的构造:客户最近一次乘坐公司飞机距观测窗口结束的月数 = 最后一次乘机时间至观测窗口末端时长[单位:月]
-F的构造:客户再观测窗口内乘坐公司飞机的次数 = 观测窗口的飞行次数[单位:次]
--M的构造:客户再观测时间内在公司累计的飞行里程 = 观测窗口总飞行公里数[单位:公里]
--C的构造:客户在观测时间内乘坐舱位所对应的折扣系数的平均值 = 平均折扣率 [单位:无]
create table lrfmc as
selectround((unix_timestamp(load_time,'yyyy/MM/dd')-unix_timestamp(ffp_date,'yyyy/MM/dd'))/(30*24*60*60),2) as l,round(last_to_end/30,2) as r,flight_count as f,seg_km_sum as m,round(avg_discount,2) as c
from flfasl;

 数据标准化:

create table standard_lrfmc asselect (lrfmc.l-minlrfmc.l)/(maxlrfmc.l-minlrfmc.l) as l,(lrfmc.r-minlrfmc.r)/(maxlrfmc.r-minlrfmc.r) as r,(lrfmc.f-minlrfmc.f)/(maxlrfmc.f-minlrfmc.f) as f,(lrfmc.m-minlrfmc.m)/(maxlrfmc.m-minlrfmc.m) as m,(lrfmc.c-minlrfmc.c)/(maxlrfmc.c-minlrfmc.c) as cfrom lrfmc,(select max(l) as l,max(r) as r,max(f) as f,max(m) as m,max(c) as c from lrfmc) as maxlrfmc,(select min(l) as l,min(r) as r,min(f) as f,min(m) as m,min(c) as c from lrfmc) as minlrfmc;

数据挖掘:(客户分类)未完待续…… 

参考资料:

26个数据分析案例——第二站:基于Hive的民航客户价值分析

航空公司客户价值分析模型LRFCM


http://www.ppmy.cn/server/28270.html

相关文章

Linux驱动开发——(六)按键中断实验

目录 一、简介 二、修改设备树 2.1 添加pinctrl节点 2.2 添加KEY设备节点 2.3 检查是否被其他外设使用 三、代码 3.1 驱动代码 3.2 测试代码 3.3 平台测试 一、简介 以I.MX6U-MINI为例&#xff0c;实现KEY0按下后&#xff0c;设备识别到并将数据发送到平台。 二、修…

Oracle故障处理:正在使用的索引失效了

项目场景 昨日&#xff0c;五一放假前一天&#xff0c;项目现场有同事反应业务系统出了问题&#xff1a; 在数据库中用测试数据发现insert、update 等操作不可用。 在应用系统的输出日志中发现数据库抛出了如下异常&#xff1a; ORA-01502:索引 ‘XX.PK_IXXX’ 或这类索引的…

基于Hyperf的CMS,企业官网通用php-swoole后台管理系统

2023年9月11日10:47:00 仓库地址&#xff1a; https://gitee.com/open-php/zx-hyperf-cms CMS&#xff0c;企业官网通用PHP后台管理系统 框架介绍 hyperf SCUI 后端开发组件 php 8.1 hyperf 3.1 数据库 sql(使用最新日期文件) hyperf\doc\sql_bak mysql 8. 系统默认账号…

大模型引领未来:探索其在多个领域的深度应用与无限可能【第七章、大模型在科技、网络安全、农业等方面的应用探索】

大模型引领未来&#xff1a;探索其在多个领域的深度应用与无限可能【第七章、大模型在科技、电商、网络安全、农业等方面的应用】 第七章、大模型在科技、电商、网络安全、农业等方面的应用探索1、大模型在科技上的应用1.1、大模型在科技上可能诞生的应用 2、大模型在网络安全上…

平面模型上提取凸凹多边形------pcl

平面模型上提取凸凹多边形 pcl::PointCloud<pcl::PointXYZ>::Ptr PclTool::ExtractConvexConcavePolygons(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud) {pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);p…

Pyspark+关联规则 Kaggle购物篮分析案例

数据集地址&#xff1a;Market Basket Analysis | Kaggle 我的NoteBook地址&#xff1a;pyspark Market Basket Analysis | Kaggle 零售商期望能够利用过去的零售数据在自己的行业中进行探索&#xff0c;并为客户提供有关商品集的建议&#xff0c;这样就能提高客户参与度、改…

Kubernetes学习笔记03

第八章、Kubernetes控制器Controller详解 Statefulset Statefulset主要是用来部署有状态应用 对于StatefulSet中的Pod&#xff0c;每个Pod挂载自己独立的存储&#xff0c;如果一个Pod出现故障&#xff0c;从其他节点启动一个同样名字的Pod&#xff0c;要挂载上原来Pod的存储…

Hive判空函数 COALESCE 和 NVL 使用示例

Hive判空函数 COALESCE 和 NVL 使用示例 1. 在Hive中&#xff0c; COALESCE 和 NVL 函数都是用于处理NULL值的函数&#xff0c;以下是它们的用途总结&#xff1a; COALESCE&#xff1a; COALESCE 函数用于返回参数列表中第一个非NULL的数值或表达式。语法&#xff1a; COALESC…