模型基本原理
会员价值度用来评估用户的价值情况,是区分会员价值的重要模型和参考依据,也是衡量不同营销效果的关键指标。
价值度模型一般基于交易行为产生,衡量的是有实体转化价值的行为。常用的价值度模型是RFM
RFM模型是根据会员
?RFM模型的基本实现过程
①设置要做计算时的截止时间节点(例如2017-5-30),用来做基于该时间的数据选取和计算。
②在会员数据库中,以今天为时间界限向前推固定周期(例如1年),得到包含每个会员的会员ID、订单时间、订单金额的原始数据集。一个会员可能会产生多条订单记录。
③ 数据预计算。从订单时间中找到各个会员距离截止时间节点最近的订单时间作为最近购买时间;以会员ID为维度统计每个用户的订单数量作为购买频率;将用户多个订单的订单金额求和得到总订单金额。由此得到R、F、M三个原始数据量。
④ R、F、M分区。对于F和M变量来讲,值越大代表购买频率越高、订单金额越高;但对R来讲,值越小代表离截止时间节点越近,因此值越好。对R、F、M分别使用五分位(三分位也可以,分位数越多划分得越详细)法做数据分区。需要注意的是,对于R来讲需要倒过来划分,离截止时间越近的值划分越大。这样就得到每个用户的R、F、M三个变量的分位数值。
⑤ 将3个值组合或相加得到总的RFM得分。对于RFM总得分的计算有两种方式,一种是直接将3个值拼接到一起,例如RFM得分为312、333、132;另一种是直接将3个值相加求得一个新的汇总值,例如RFM得分为6、9、6。
RFM划分案例思路说明
在得到不同会员的RFM之后,根据步骤⑤产生的两种结果有两种应用思路
思路1:基于3个维度值做用户群体划分和解读,对用户的价值度做分析
在得到不同会员的RFM之后,根据步骤⑤产生的两种结果有两种应用思路
思路2:基于RFM的汇总得分评估所有会员的价值度价值,并可以做价值度排名。同时,该得分还可以作为输入维度与其他维度一起作为其他数据分析和挖掘模型的输入变量,为分析建模提供基础。
案例背景介绍?
用户价值细分是了解用户价值度的重要途径,针对交易数据分析的常用模型是RFM模型
业务对RFM的结果要求
规划目标将RFM的3个维度分别做3个区间的离散化
数据介绍?
案例数据是某企业从2015年到2018年共4年的用户订单抽样数据,数据来源于销售系统
数据在Excel中包含5个sheet,前4个sheet以年份为单位存储为单个sheet中,最后一张会员等级表为用户的等级表?
?读取数据
查看数据基本情况
?数据预处理
汇总所有数据?
汇总所有数据: 将4年的数据使用pd.concat方法合并为一个完整的dataframe data_merge,后续的所有计算都能基于同一个dataframe进行,而不用写循环代码段对每个年份的数据单独计算?
按会员ID做聚合?
?这里使用groupby分组,以year和会员ID为联合主键,设置as_index=False意味着year和会员ID不作为index列,而是普通的数据框结果列。后面的agg方法实际上是一个“批量”聚合功能的函数,它实现了对date_interval、提交日期、订单金额三列分别以min、count、sum做聚合计算的功能。否则,我们需要分别写3条goupby来实现3个聚合
确定RFM划分区间?
在做RFM划分时,基本逻辑是分别对R、F、M做离散化操作,然后再计算RFM。而离散化本身有多种方法可选,由于我们要对数据做RFM离散化,因此需要先看下数据的基本分布状态
?
区间分析?
从数据分布看出 汇总后的数据总共有14万条 r和m的数据分布相对较为离散,表现在min、25%、50%、75%和max的数据没有特别集中
而从f(购买频率)则可以看出,大部分用户的分布都趋近于1,表现是从min到75%的分段值都是1且mean(均值)才为1.365
计划选择25%和75%作为区间划分的2个边界值
?确定RFM划分区间
f的分布情况说明
举例:[1,2,3,4,5],假如数据划分的区间边界是[1,3,5],即划分为2份?
其中的2/3被划分到(1,3]区间中
3/4/5被划分到(3,5]区间中?
1无法划分到任何一个正常区间内
RFM计算过程
?将3列作为字符串组合为新的分组
保存结果?
保存RFM结果到Excel
rfm_gb.to_excel('sales_rfm_score1.xlsx') # 保存数据为Excel
保存结果到Mysql ? ?(pip install pymysql)
?
RFM图形展示?
为了更好地了解不同周期下RFM分组人数的变化,通过3D柱形图展示结果
展示结果时只有3个维度,分别是年份、rfm分组和用户数量。
第1行代码使用数据框的groupby以rfm_group和year为联合对象,以会员ID会为计算维度做计数,得到每个RFM分组、年份下的会员数量
第2行代码对结果列重命名
第3行代码将rfm分组列转换为int32形式?
输出3D图像中
?分别针3类群体,按照公司实际运营需求和当前目标,制定了不同的群体落地的排期