数据分析方法:RFM模型

一、RFM基本原理

RFM是三个单词的缩写:

最近一次消费时间(Recency),取数的时候一般取最近一次消费记录到当前时间的间隔,比如:7天、30天、90天未到店消费;直观上,一个用户太久不到店消费,肯定是有问题,得做点什么事情,很多公司的用户唤醒机制都是基于这个制定的。

 一定时间内消费频率(Frequency),取数时,一般是取一个时间段内用户消费频率。比如:一年内有多少个月消费,一个月内有多少天到店等等;直观上,用户消费频率越高越忠诚;很多公司的用户激励机制都是基于这个制定的,买了一次还想让人家买第二次。

一定时间内累计消费金额(Monetary),取数时,一般是取一个时间段内用户消费金额,比如:一年内有多少消费金额;直观上,用户买的越多价值就越大;很多公司的VIP机制是基于这个指定的,满10000银卡,满20000金卡一类。

 

频次和金额本身可以做一个二分类矩阵,也非常好用(如左图〉。

特别是,这个二分类和用户注册时间、用户参与活动頻率、参与活动金额占比再结合,能有更多解读。比如:国货用户如果大比例是利用促销国货,就得调整促销商品或者奖励力度,比如边缘用户是新人多还是老人多,业务含义也不同。RPn不是唯一 的定势,完全可以研发出FMR(register time) FMR(promotion) 等模型。

所以,即使单独看这三个维度,都是很有意义的。

当然,也有把三个维度交叉起来看的(如下图):

最典型的就是生鲜,人天天都要吃饭,7天不吃可能就有问题;普通的快消品零售可能取30天,类似服装百货零售可能取90天;当然,更多的做法是按月取,比如R按月取,F、M算最近一年内的数值——这样做单纯是因为比较方便理解而已。

RFM本质上是一种用三个分类维度,找判断标准方法;通过三个维度的组合计算,能判定出用户的好坏,然后采取对应措施。

RFM的真正意义在于:这是一种从交易数据反推用户价值的方法,因此可行性非常高!

要知道:做数据分析的最大瓶颈是数据采集,而只要是个正常企业,交易数据是肯定有的;因此只要企业建立了用户ID统一认证机制,就能将用户ID与交易数据关联起来,就能用RFM来分析用户了;即使没有埋点、没有网站、没有基础信息也能做,简直是方便好用的神器。

二、RFM的最大短板

RFM最大的短板,在于用户ID统一认证;不要小看这几个字,在相当多的企业里非常难实现。

比如你去超市、连锁店、门店买东西,往往收银小妹会机械的问一句:有会员卡吗?如果回答没有,她也放你过去了;导致的结果,是线下门店的订单,一般有70%-90%无法关联到用户ID;进而导致整个用户数据是严重缺失的,直接套RFM很容易误判用户行为。

至于用户一人多张会员卡轮流薅羊毛,多个用户共同一张VIP卡拿最大折扣,店员自己用亲戚的卡把无ID订单的羊毛给薅了之类的事,更是层出不穷;而且在实体企业、互联网企业都普遍存在。

所以做RFM模型的时候,如果你真看到111类用户,别高兴太早,十有八九是有问题的;现在的企业往往在天猫、京东、自有微商城、有赞等几个平台同时运作,更加大了统一认证的难度;如果没有规划好,很容易陷入无穷无尽的补贴大坑。

三、RFM的深层问题

即使做好了用户ID统一认证,RFM还有一个更深层的问题。

让我们回顾一下,RFM模型的三个基本假设:

  • R:用户离得越久就越有流失风险
  • F:用户频次越高越忠诚
  • M:用户买的越多越有价值

反问一句:这三个假设成立吗?

如果不结合具体行业、具体产品、具体活动来看,似乎是成立的;但是一旦具体讨论就会发现:很多场景不满足这三个假设;因此:单纯讲RFM,不结合产品、活动,是很容易出BUG的。

R:用户离得越久就越有流失风险

  • 如果是服装这种季节性消费,用户间隔2-3个月是很正常;
  • 如果是手机、平板这种新品驱动产品,间隔时间基本跟着产品更新周期走;
  • 如果是家居、住房、汽车这种大件耐用品,R就没啥意义,用户一辈子就买2次;
  • 如果是预付费,后刷卡的模式,R就不存在了,需要用核销数据代替。

所以R不见得就代表着用户有流失风险,特别是现在有了埋点数据以后,用户互动行为更能说明问题。

F:用户频次越高越忠诚

  • 如果用户消费是事件驱动的,比如赛事、节假日、生日、周末;
  • 如果用户消费是活动驱动的,比如啥时候有优惠啥时候买;
  • 如果用户消费是固定模式的,比如买药的用量就是30天。

以上情况都会导致F的数值不固定,可能是随机产生的,也可能是人为操纵的。

很多企业僵硬地执行RFM模型,往往会定一个固定的F值,比如促使用户买4次,因为数据上看买了4次以上的用户就很忠诚;结果就是引发用户人为拆单,最后F值做上去了,利润掉下来了。

M: 用户买的越多越有价值

  • 如果用户是图便宜,趁有折扣的时候囤货呢?
  • 如果用户买了一堆,已经吃腻了、用够了呢?
  • 如果用户买的是耐用品,买完这一单就等十几二十年呢?
  • 如果用户消费本身有生命周期,比如母婴,游戏,已经到了生命周期末尾呢?

很多情况下,用户过去买的多,不代表未来买的多,这两者不划等号;因此真看到011、001、101的客人,别急着派券,整明白到底出了啥问题才是关键。

除了单独维度的问题外,三个维度连起来看,也容易出问题;因为很多公司的用户结构不是金字塔形,而是埃菲尔铁塔型——底部聚集了太多的不活跃用户,且不活跃用户大多只有1单,或者只有几次登录便流失;因此RFM真按八分类化出来,可能000的用户比例特别多。

这意味着现有存活的用户,可能是幸存者偏差的结果,现有的111不是000的未来;要更深层次地分析为啥会沉淀大量不活跃用户,甚至从根上改变流程,才能解决问题;真按照RFM生搬硬套。可能就把业务带到死胡同里了。

四、RFM的典型乱用 

RFM本身并没有错,在数据匮乏(特别是缺少埋点数据)的情况下,用RFM比不用RFM好太多了。

RFM的三个维度,每一个都很好用;RFM的整体架构,也适合用于评估用户经营的整体质量。

错的是生搬硬套RFM,不做深入分析;错的是看到买了大单的就叫爸爸,看到用户不买就急着发券的无脑做法;一味派券不但严重透支营销成本,更会培养出更多薅羊毛用户,破坏了正常经营,只为了RFM的数值好看。

特别是网上文章、网课最喜欢教的:按RFM,每个拆分成5段,分成5*5*5=125类,然后再用K均值聚类聚成5-8类的做法,更是大错特错。

  • 经过K均值聚类以后,连RFM原有的含义清晰的优点都没有了,到底这8类咋解读,非常混乱。
  • 这样做没有考虑数据滚动更新,过了一周或者一个月,RFM指标都变了呀!难道你还天天把全量用户拿出来聚类吗。
  • k均值聚类不是一个稳定的分类方法,无监督的分类更适合做探索性分析;隔了一周,一个用户被分成完全不同的两类,这会让市场营销、运营策划执行政策的时候非常抓狂:一天一个样,到底要推什么!

五、如何让RFM更有用

综合RFM失效的场景,可以看出:季节性、商品特征、促销活动、节假日事件、用户生命周期,这五大要素,都会影响到用户的行为;因此不局限于RFM,深入研究用户场景非常关键。

注意,这五大要素研究起来,并没有想象中的难。比如很多商品有内在的关联性,只要熟悉业务就能整明白;比如季节性、节假日事件,本质上都和时间有关;因此,对用户登录、消费的时间打上标签,就能进行分析(如下图)。

促销活动也是同理,促销活动可以直接从订单识别出来,因此也很容易给用户贴上——促销敏感型的标签。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147981.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 1 篇:计算机系统概述

前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术有限&#xff…

由于计算机中丢失msvcp110.dll的解决方法与msvcp110.dll丢失修复方法

相信大家在打开电脑软件或许游戏都有遇到过电脑提示找不到msvcp110.dll文件,导致软件游戏打不开,我们应该怎么办?不用着急,今天小编我分享我找了很久成功解决问题的方法给大家,希望可以帮到各位。 1. 使用DLL修复工具&…

【VR】【unity】如何在VR中实现远程投屏功能?

【背景】 目前主流的VD应用,用于娱乐很棒,但是用于工作还是无法效率地操作键鼠。用虚拟键盘工作则显然是不现实的。为了让自己的头显能够起到小面积代替多显示屏的作用,自己动手开发投屏VR应用。 【思路】 先实现C#的投屏应用。研究如何将C#投屏应用用Unity 3D项目转写。…

pandas

一、pandas初级 安装matplotlib:pip install matplotlib 安装pandas:pip install pandas 本地C:\Users\Administrator\pip,在此目录配置清华园的远程下载 配置内容: [global] index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-ho…

WebSocket实战之五JSR356

一、前言 前几篇WebSocket例子服务端我是用NodeJS实现,这一篇我们用Java来搭建一个WebSocket服务端,从2011年WebSocket协议RFC6455发布后,大多数浏览器都实现了WebSocket协议客户端的API,而对于服务端Java也定义了一个规范JSR356,即Java API for WebSoc…

华为云云耀云服务器L实例评测|搭建CounterStrike Source Delicated Server(CS起源游戏服务器)

华为云云耀云服务器L实例评测|搭建CounterStrike Source Delicated Server(CS起源游戏服务器) #【有奖征文】华为云云服务器焕新上线,快来亲身感受评测吧!# ⭐️ CounterStrikeSource(CS起源是Valve的一款…

windows系统利用powershell查看系统支持那些Windows功能选项

在PowerShell中,我们可以使用Get-WindowsOptionalFeature cmdlet命令来查看Windows功能选项。 打开PowerShell 输入以下命令:将结果输出到1.log Get-WindowsOptionalFeature -Online >1.log 可以看到在指定路径下看到生成了文件 打开查看内容&…

jvm 参数配置

查看当前jvm配置参数的值 jsp查看所有的jvm端口 jinfo -flag 参数(XX:后面的) JIT配置 -XX:CompileThreshold在方法调用的默认阈值在客户端1500次,在服务器端10000次。 -XX:-UseCounterDecay用来关闭热度衰减。 -XX:CounterHalfLifeTime设置半衰减的时间&#x…

辅助驾驶功能开发-测试篇(2)-真值系统介绍

1 真值系统概述 1.1 真值评测系统核心应用 快速构建有效感知真值,快速完成感知性能评估,快速分析感知性能缺陷。 主要应用场景包括: 1. 感知算法开发验证: 在算法开发周期中,评测结果可以作为测试报告的一部分,体现算法性能的提升。 2. 遴选供应…

基于SpringBoot+MyBatis实现的个人博客系统(一)

这篇主要讲解一下如何基于SpringBoot和MyBatis技术实现一个简易的博客系统(前端页面主要是利用CSS,HTML进行布局书写),前端的静态页面代码可以直接复制粘贴,后端的接口以及前端发送的Ajax请求需要自己书写. 博客系统需要完成的接口: 注册登录博客列表页展示博客详情页展示发布博…

九、2023.10.3.Linux(end).9

文章目录 33、简述mmap的原理和使用场景?34、互斥量能不能在进程中使用?35、协程是轻量级线程,轻量级表现在哪里?36、说说常见信号有哪些,表示什么含义?37、说说线程间通信的方式有哪些?38、说说…

C# 自定义控件库之Lable组合控件

1、创建类库 2、在类库中添加用户控件(Window窗体) 3、控件视图 4、后台代码 namespace UILib {public partial class DeviceInfoV : UserControl{public DeviceInfoV(){InitializeComponent();ParameterInitialize();}#region 初始化private void Par…

初级篇—第二章SELECT查询语句

文章目录 什么是SQLSQL 分类SQL语言的规则与规范阿里巴巴MySQL命名规范数据导入指令 显示表结构 DESC基本的SELECT语句SELECTSELECT ... FROM列的别名 AS去除重复行 DISTINCT空值参与运算着重号查询常数过滤数据 WHERE练习 运算符算术运算符加减符号乘除符号取模符号 符号比较运…

DevSecOps 将会嵌入 DevOps

通常人们在一个项目行将结束时才会考虑到安全,这么做会导致很多问题;将安全融入到DevOps的工作流中已产生了积极结果。 DevSecOps:安全正当时 一直以来,开发人员在构建软件时认为功能需求优先于安全。虽然安全编码实践起着重要作…

python——Django框架

一、基本介绍 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。 使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC …

踩坑笔记 MySQL分页排序查询(Order by limit)导致数据丢失和重复

文章目录 背景现象原因解决方案 背景 分页查询排序后的数据,是一个非常常见的业务场景;但当使用不唯一的字段排序时,分两页查询的数据可能出现数据重复和丢失的错觉。 在执行查询时,MySQL会根据查询优化器的决策来确定数据的检索…

R语言进行孟德尔随机化+meta分析(2)----基于R和stata

目前不少文章用到了孟德尔随机化meta分析,在上一章咱们简单介绍了一下meta分析的基础知识。咱们今天来介绍一篇11分文章,由文章看看孟德尔随机化meta分析如何进行,文章的题目是:Appraising the causal role of smoking in multipl…

【PostgreSQL】【存储管理】表和元组的组织方式

外存管理负责处理数据库与外存介质(PostgreSQL8.4.1版本中只支持磁盘的管理操作)的交互过程。在PostgreSQL中,外存管理由SMGR(主要代码在smgr.c中)提供了对外存的统一接口。SMGR负责统管各种介质管理器,会根据上层的请求选择一个具体的介质管理器进行操作…

动态链接那些事

1、为什么要动态链接 1.1 空间浪费 对于静态链接来说,在程序运行之前,会将程序所需的所有模块编译、链接成一个可执行文件。这种情况下,如果 Program1 和 Program2 都需要用到 Lib.o 模块,那么,内存中和磁盘中实际上就…

Guava限流器原理浅析

文章目录 基本知识限流器的类图使用示例 原理解析限流整体流程问题驱动1、限流器创建的时候会初始化令牌吗?2、令牌是如何放到桶里的?3、如果要获取的令牌数大于桶里的令牌数会怎么样4、令牌数量的更新会有并发问题吗 总结 实际工作中难免有限流的场景。…