欢迎光临散文网 会员登陆 & 注册

Power BI之DAX神功番外篇 16.RFM模型分析

2022-09-14 13:54 作者:孙兴华zz  | 我要投稿

一、RFM模型分析是谁研究出来的?

百度百科上提到,RFM模型是Arthur Hughes提出的。包括怎么考虑问题,怎么确定值,都有详细的理论说明。谁都可以将这个模型应用到自己工作中,但并不代表你用了,别人就不可以用,因为这不是你发明的。

DAX语法知识产权是微软的,RFM模型知识产权是美国数据库营销研究所的。@雷@武

二、什么是RFM模型?

官方解释如下:

R代表:近期交易行为 (Recency)

F代表:交易频率 (Frequency)

M代表:交易金额 (Monetary)

RFM模型是衡量客户价值和客户消费能力的重要工具和手段。该模型通过近期交易行为 (Recency)、交易频率 (Frequency)、交易金额 (Monetary)三项指标来描述客户价值。一般情况会将客户分为9类。分别是:

重要价值客户、重要召回客户、重要发展客户、重要挽留客户、潜力客户、新客户、回归客户、一般价值客户、流失客户

我做了一张表,"√"代表符合,"× "代表不符合。

R:近期交易行为      F:交易频率      M:交易金额

例如,我在某东从2008年起开始消费,因为他们服务器问题订单数量和总金额是从2013年3月14日开始计算的,平均每年消费2万多元。但是平均每月只有7单左右(785单 ÷ 9年 ÷ 12个月 ≈ 7单/月)。我在某东可能属于重要发展客户

再看我在某宝的账单,我近18年的时间里,下单973次,消费19万。但是我已经很久不在他们家买东西了。2019年以后我只有鲜花和游戏点卡找他们购买了,我可能属于他们的回归客户

再说拼夕夕,我是从2019年才开始使用,到目前累计收货只有1万元,但是单数特别多,都是几块钱和十几块钱的小玩意儿,我在他家客单价特低。我可能属于他们的一般价值客户

你现在可以分析一下,你在每家电商属于什么客户了?

三、RFM模型必须有什么?

客户类型一般分为9类,你的实际分析中可能会更多(分的更细),或更少,并不绝对。

但是有一个必须因素,就是主键。在数据库相关课程中都讲过,主键特点:不为空、不重复且不易发生改变。

我在每一家电商平台都有帐号,帐号是唯一的,即主键。

如果没帐号呢?例如你手机浏览器(没有登录用户名时),你经常搜索汽车,它就经常给你弹出关于汽车的新闻和广告。因为你的手机上的IMEI是全球唯一的号码(即设备号),知道你用哪台设备上网,再根据你近期浏览习惯,算出你的兴趣爱好,才会出现推送。现在大多数APP都能识别你的设备号,例如:某信APP,我~设置~帐号与安全~登录过的设备,虽然你只能看到设备名称,但是人家服务器上识别了你的IMEI码。

很久以前我见过一个大聪明,诈骗数额巨大后跑了,把手机号扔了,手机没舍得扔,当时手机号还有无记名的,他买了一张无记名的卡放到旧手机里,运营商就可以查到之前他手机号用过的设备现在正在使用什么手机号,再定位手机号就可以了(需要有相关部门手续)。现在都是实名制手机卡,没有这个问题了。

Ps:我知道你接下来想抬什么扛,你要清楚鸡毛蒜皮的小事和大事处理方法是不同的。

四、确定R值需要两个重要线索

友情提示:表格可以在评论区置顶中下载

完成RFM模型分析,我们只需要写一个新建表公式即可,但是需要分步理解。

线索1:首次购买时间

原理详见《DAX神功》第1卷第14回

公式的意思:添加列,对销售表按账号“分组”,每个组中取最小日期。也就是首次购买日期

线索2:末次购买时间

原理详见《DAX神功》第1卷第14回

公式的意思:添加列,对销售表按账号“分组”,每个组中取最大日期。也就是末次购买日期


现在我们发现,tb1和tb2都是添加列,可以在一个变量中完成,于是我们修改上面的公式

确定R值,R指的是近期交易行为,其实就是最后一次消费日期距今天已经过了多少天。在DAX函数中Today()函数代码当前日期,所以:TODAY()-[末次日期] = R值

但是,现在有一个棘手的问题,tb2是我们创造出来的虚拟表,所以我们不能使用summarize,虚拟表中的列又叫派生列,我们可以使用GROUPBY函数。

原理详见《DAX神功》第4卷第21回

公式意思:按tb2那张表的【账号】列分组,每个账号对应的R值是  当前日期-末次日期 的天数

五、确定F值与M值

1、F值代表交易频率,就是每个账号交易了多少次。我们既然已经按账号分组了,每个组计数就搞定了。

Groupby函数聚合值怎么写详见《DAX神功》第4卷第21回


2、M值代表金额,同理,即每个账号一共消费了多少钱。

Groupby函数聚合值怎么写详见《DAX神功》第4卷第21回

六、首次日期与末次日期我们还有用

主要用于判断谁是新客户?谁是回归客户?这时不能只看R值,还要参考末次日期与首次日期的间隔。

所以,使用Groupby聚合后的表,还要带上这两个日期

Groupby函数聚合值怎么写详见《DAX神功》第4卷第21回

这里使用minx和maxx都是一样的,之所以一样用一个就是告诉你均可,反正就一个值,最大和最小无区别

七、确定RFM标志

下图什么意思,我咨询了小学四年级学生,他说能看懂,我相信各位观众肯定也能看懂。打勾的就是1,打叉的就是0,新客户特殊标注。

【1】R标志

每个账号的R间隔天数,例如:账号【哈】的间隔天数是1,平均间隔天数(1+2+3+762+2+986+974+980+0)/ 9 ≈ 412天,当间隔天数<=平均天数时,表示近期有消费。当然这个值不一定就是平均值,你可以根据业务需求,例如写小于等于90天都是可以的。

if([R(间隔天数)]<=AVERAGEX(tb2,[R(间隔天数)]),1,0) 


【2】F标志

当每个账号消费次数大于平均次数时,说明这个人交易次数多。你可以想像成平均分,如果你考了80分,你们班平均分70分,说明你考的还不错。

if([F(消费次数)]>=AVERAGEX(tb2,[F(消费次数)]),1,0)


【3】M标志

每个账号的消费金额高于平均标准时,说明这个账号有一定的消费能力。

if([M(金额)]>=AVERAGEX(tb2,[M(金额)]),1,0)

【4】新客户标志

我们知道了,只有R=1,F=0,M=0时才会判断是否为新客户

我们将以下4个条件使用and关系,当全部满足时,标注新客户,30天是我个人的感觉,你可以根据你的需求自定义时间。在DAX函数中,and关系使用&&表示 。

代码如下:


八、他们都是什么会员?

根据下表写Switch判断吧

switch函数在《火力全开》中详细讲过,笔记12.03

完整代码如下:

接下来你就可以将这张表中的字段放到视觉对象(图表或矩阵中)展示给大家看了。

我们再看一下,原始表和我们造的表没有任何连线,当原始表数据发生变化时,刷新后我们造的表就会随之改变。还是那句话,关系连线尽量不做。

最后欢迎大家把所学知识应用到工作中,并将学会的知识讲给更多人听。微软欢迎我们使用DAX函数,RFM模型的作者看到我们使用也会很开心的:)

PowerBI(DAX函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等

https://www.bilibili.com/read/cv10222110

Power BI之DAX神功番外篇 16.RFM模型分析的评论 (共 条)

分享到微博请遵守国家法律