附案例数据和代码 不到70行Python代码,轻松玩转RFM用户分析模型( 二 )


上一步计算出了每个用户购买频次,这里我们只需要得到每个用户总金额,再用总金额除以购买频次,就能拿到用户平均支付金额:
最后,万剑归宗,三个指标合并:
至此,我们完成了模型核心指标的计算,算是打扫干净了屋子再请客 。
03 维度打分
维度确认的核心是分值确定,按照设定的标准,我们给每个消费者的R/F/M值打分,分值的大小取决于我们的偏好,即我们越喜欢的行为,打的分数就越高:
RFM模型中打分一般采取5分制,有两种比较常见的方式,一种是按照数据的分位数来打分,另一种是依据数据和业务的理解,进行分值的划分 。这里希望同学们加深对数据的理解,进行自己的分值设置,所以讲述过程中使用的是第二种,即提前制定好不同数值对应的分值 。
R值根据行业经验,设置为30天一个跨度,区间左闭右开:
F值和购买频次挂钩,每多一次购买,分值就多加一分:
我们可以先对M值做个简单的区间统计,然后分组,这里我们按照50元的一个区间来进行划分:
这一步我们确定了一个打分框架,每一位用户的每个指标,都有了与之对应的分值 。
04 分值计算
分值的划分逻辑已经确定,看着好像有点麻烦 。下面我们有请潘大师()登场,且看他如何三拳两脚就搞定这麻烦的分组逻辑,先拿R值打个样:
沧海横流,方显潘大师本色,短短一行代码就搞定了5个层级的打分 。的cut函数,我们复习一下:
接着,F和M值就十分容易了,按照我们设置的值切分就好:
第一轮打分已经完成,下面进入第二轮打分环节 。
客官不要紧脏,面试都还不止两轮呢,伦家RFM模型哪有那么随便的 。
现在R-SCORE、F-SCORE、M-SCORE在1-5几个数之间,如果把3个值进行组合,像111,112,113...这样可以组合出125种结果,过多的分类和不分类本质是一样的 。所以,我们通过判断每个客户的R、F、M值是否大于平均值,来简化分类结果 。
因为每个客户和平均值对比后的R、F、M,只有0和1(0表示小于平均值,1表示大于平均值)两种结果,整体组合下来共有8个分组,是比较合理的一个情况 。我们来判断用户的每个分值是否大于平均值:

附案例数据和代码  不到70行Python代码,轻松玩转RFM用户分析模型

文章插图
中判断后返回的结果是True和False,对应着数值1和0,只要把这个布尔结果乘上1,True就变成了1,False变成了0,处理之后更加易读 。
05 客户分层
回顾一下前几步操作,清洗完之后我们确定了打分逻辑,然后分别计算每个用户的R、F、M分值(SCORE),随后,用分值和对应的平均值进行对比,得到了是否大于均值的三列结果 。至此,建模所需的所有数据已经准备就绪,剩下的就是客户分层了 。
RFM经典的分层会按照R/F/M每一项指标是否高于平均值,把用户划分为8类,我们总结了一下,具体像下面表格这样:
由于传统的分类,部分名称有些拧巴,像大多数分类前都冠以“重要”,“潜力”和“深耕”到底有什么区别?“唤回”和“挽回”有什么不一样?
本着清晰至上原则,我们对原来的名称做了适当的改进 。强调了潜力是针对消费(平均支付金额),深耕是为了提升消费频次,以及重要唤回客户其实和重要价值客户非常相似,只是最近没有回购了而已,应该做流失预警等等 。这里只是抛砖引玉,提供一个思路,总之,一切都是为了更易理解 。
对于每一类客户的特征,我们也做了简单的诠释,比如重要价值客户,就是最近购买我们的产品,且在整个消费生命周期中购买频次较高,平均每次支付金额也高 。其他的分类也是一样逻辑,可以结合诠释来强化理解 。下面,我们就用来实现这一分类 。