数据分析之客户价值模型(RFM)技术总结
作者 | leo
管理学中有一个重要概念那就是客户关系管理(CRM),它核心目的就是为了提高企业的核心竞争力,通过提高企业与客户间的交互,优化客户管理方式,从而实现吸引新客户、保留老客户以及将已有客户转化为忠实客户的运营机制。
而这其中最为经典的实现模型那就是RFM模型,它主要通过对每个客户的近期消费时间,购买频率和购买金额来对不同的客户进行价值状态划分。
从而使得我们可以有针对性的对不同用户进行个性化运营和营销。
01 RFM模型核心维度
针对上述3个维度,我们的预期:
最近一次消费的时间(Recency):
该维度指的是最近一次消费时间间隔(R), 也就是上一次消费的时间间隔,该值越小客户价值越高,这是因为消费间隔越近的客户越有可能产生二次消费。
某段时间内消费频率次数(Frequency):
消费频次(F)体现了客户的购买频率,那么购买频次越高,越能体现用户的消费活跃程度,因此,客户价值也就越高。
某段时间消费的总金额(Monetary):
消费金额(M)这个从字面意思即可知道,用户的消费金额越高,用户的消费能力越强,那么自然用户的价值也就越高。
02 RFM划分用户类型及对应运营策略
03 Excel中实现RFM模型
为了解决现存方法的缺陷,作者首次提出了将MCL、SSL和Excel是实现RFM模型的一个重要且十分直接的工具,只需要灵活使用Excel自带的函数就可以实现数据的汇总计算,得到RFM模型的三个指标值,从而将用户的价值类型提取出来,让我们有针对性的进行业务推广策略。
接下来我们给大家演示一个用Excel实现的RFM模型:
【数据来源】
某淘宝店铺的月份销售数据
【分析目标】
根据现有订单数据,构建店铺用户价值模型,从而为后续的精细化运营不同的客户群体打下基础
【数据预处理】
数据量大概有3989条,可以在excel内处理,也可以使用python对大批量的数据进行处理。
3.1 提取关键词字段:
【买家会员名】、【总金额】、【订单付款时间】、并设置对应的数据类型,我们要在同页面进行RFM值的计算。
3.2 计算Recency, Monetary,Frequency
Recency: 通过对【买家会员名】、【总金额】、【订单付款时间】三列数据做透视表,对订单付款时间求最大值,即最近消费时间,然后与观测时间进行求差运算,可得R值
Monetary:对总金额下的客户不同消费进行平均值运算,即可获得该客户的M值
Frequency:对订单付款时间进行计数运算,就是该客户的消费频次F值
3.3 客户RFM模型建立
计算完客户的R、F、M值后,接下来就可以实现客户RFM模型的评估了。
【简单实现】
此时可以先计算出来R、F、M三个值的平均值,然后对客户的每个维度与该维度的平均值进行比较,如果超出平均值就是高,否则就是低。
然后将三列字段通过’&’连接符链接起来,生成RFM辅助列。
然后通过我们预先准备好的价值模型参考表,生成用户价值模型。
最后通过excel的vlookup函数提取客户类型字段到计算表中,就实现了我们的最终结果。
【计分法】
通过用户的R、F、M值与对应值的极差(最大值与最小值的差),来确定R-Score, F-Score,M-Score。
因此首先计算R、F、M的最大值、最小值、极差三等分距
最大值:通过“=max(B5:B1204)” 计算,(计算F时B换成C,M时B换成D即可)
最小值:通过“=min(B5:B1204)”计算(计算F时B换成C,M时B换成D即可)
极差:通过“=(F1-F2)/3”计算(计算F时F换成G,M时F换成H即可)
R-Score计算方式:在E5单元格输入:
“=IF(ROUNDUP((B5-$F$2)/$F$3,0)=0,1,ROUNDUP((B5-$F$2)/$F$3,0)) ”
F-score和M-score计算方式类似:
“=IF(ROUNDUP((C5-$G$2)/$G$3,0)=0,1,ROUNDUP((C5-$G$2)/$G$3,0))”
“ =IF(ROUNDUP((D5-$H$2)/$H$3,0)=0,1,ROUNDUP((D5-$H$2)/$H$3,0))”
RFM-Score计算采用将R、F、M以百分位、十分位、个位组成三位数的方式实现,共有3*3*3=27种组合方式。
H5单元格的公式:“=E5*100+F5*10+G5”
下拉填充柄应用于整个列表,得到最后结果:
然后对数据表区域A4到H3996进行数据透视:汇总不同的RFM-Score对应的客户群体。
可以采用数据条的方式直观显示客户分布情况。
04 Python实现RFM模型
通过Python处理数据时,我们首先需要关注我们提取进来的数据是否需要预处理,比如数据的类型是否符合预期,字段名是否需要调整,缺失值是否需要填充,重复值是否需要去除等等,因此第一步我们首先需要对数据进行初步的熟悉了解:
4.1 熟悉数据源
常用于初步了解数据的方法有很多比如:shape(了解数据的大小,几行几列),head(显示其中的前几条数据),tail(显示数据源最后几条数据),sample(随机提取几条数据),info(显示数据源的各字段数据类型),describe(对数据源进行数学描述)。
显示结果如下:
通过上图我们发现交易记录里面会有一些无效订单,那么我们首先就要排除这类订单,那么就可以通过pandas的布尔索引来进行数据的筛选:
结果如下:
4.2 选取字段
鉴于我们仅需要买家付款时间,购买日期,实付金额这三个字段,我们仅需要对他们进行数据处理,因此可以排除其他字段。
结果如下:
缺失值处理:
4.3 RFM建模:
A. 计算R值
添加天数字段,将付款时间与观察日期进行日期计算得到R值
运行结果如下:
B. 计算R、F、M值
通过聚合函数,对买家昵称进行计数运算获得消费频次F值,计算天数字段的最小值获得客户的R值,通过实付金额的求和运算获得客户的M值。
运行结果如下:
C. 用户价值评分
通过上述计算,我们可以根据不同的分数段来对客户R、F、M值进行打分,就本案例来讲:
R值:我们得出的最小值是660,以30天作为间隔,660-690天,打5分;690-720,打4分;720-750打3分;750-780打2分;>780,打1分。
F值:我们得出的最小值是1次,以1次作为时间间隔,0-2,打1分;2-3,打2分;3-4,打3分;4-5,打4分;>5,打5分。
M指:我们得出的最小值是0.005元,我们以500元作为时间间隔,0-50,打1分;50-100,打2分;100-150,打3分;150-200,打4分;>200,打5分。
依据上述标准建立程序方法:
运行结果:
D. 用户标签设定:
第一步:计算用户R、F、M平均值:
运行结果
第二步:验证用户各项指标是否超出平均值,是则计一分,否则不计分。
运行结果如下:
第三步:生成用户标签列:
运行结果如下:
E. 可视化呈现:
柱状图:
运行结果如下:
通过以上数据分析工具的分析,我们可以发现在实现RFM模型的方法中,Python具有更为强大的可用性和灵活性,且拥有完备的数据分析手段,从数据预处理、分析到最后的数据呈现。
而Excel在实际工作中应用场景也是非常多见的,通过本案例可以很好的实践Excel相关函数,希望本文对你的数据分析之旅有所帮助。
数据分析之客户价值模型(RFM)技术总结的更多相关文章
- 航空客户价值分析特色LRFMC模型——RFM升级
本文转载自微信公众号TIpDM. 每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 我们说RFM ...
- 用户价值和RFM模型
什么是用户价值? 用户价值就是对公司来说有用的地方,比如有的公司看中用户的消费能力,有的公司则看中用户的忠诚度 .各公司的业务目的不同,用户价值的体现自然也不同.这里主要说一下适用于电商的RFM模型. ...
- 技术的止境(客户价值第一,快速实现第二,边做边学,迅速成为牛人。紧贴客户的需求去做技术,立于不败之地。追求的目标:把一项产品去做好,用产品去养活自己和家人)good
作为一个依靠技术来谋生的程序员,我最近一直在思考一个问题,有限的生命里,面对无限的技术更新,我要研究到什么程度才能算是完成我的成为技术大牛的目标呢?换而言之,那就是技术的止境在哪儿呢?深入的思考下去, ...
- 用户价值模型 CITE :https://www.jianshu.com/p/34199b13ffbc
RFM用户价值模型的原理和应用 ▌定义 在众多的用户价值分析模型中,RFM模型是被广泛被应用的:RFM模型是衡量客户价值和客户创利能力的重要工具和手段,在RFM模式中,R(Recency)表示客户购 ...
- Python使用RMF聚类分析客户价值
投资机构或电商企业等积累的客户交易数据繁杂.需要根据用户的以往消费记录分析出不同用户群体的特征与价值,再针对不同群体提供不同的营销策略. 用户分析指标 根据美国数据库营销研究所Arthur Hughe ...
- 向量自回归模型VS风险价值模型(VAR&VaR)
单从外观上看,VAR&VaR两个模型很容易混淆,但就模型方法和用处两者截然不同,R语言作为数据分析的有力工具,其函数包库中包含各种各样的统计模型.通过vars包可以调用向量自回归模型,通过Pe ...
- 如何通过CRM评估客户价值和提高客户忠诚度?
随着市场经济的日益繁荣,同行业之间企业的竞争越来越激烈,企业纷纷各出奇招吸引和挖掘客户,力求让自己的品牌成为更多客户的第一选择.那么,我们可以用什么方法来评估客户价值,提高客户忠诚度呢? 在互联网时代 ...
- 8月7号晚7点Autodesk北京办公室,我们来聊聊HTML5/ WebGL 3D 模型浏览技术
Autodesk 发布了一款完全无需插件的三维模型浏览器 Autodesk 360 Viewer,大家有没有兴趣,下班后过来聊聊吧! 8月7号 周四, 19:00~21:00 Autodesk北京 ...
- k-means实战-RFM客户价值分群
数据挖掘的十大算法 基本概念 导入数据集到mysql数据库中 总共有940个独立消费数据 K-Means 算法 K-Means 算法是一个聚类算法.你可以这么理解,最终我想把物体划分成 K 类.假设每 ...
随机推荐
- Oracle 查询NULL字段/空字符串
简单记录一下: 工作中需要查询某个字段值为空的数据, 最开始查询的时候按照以前的思路 : 1.where 字段名=NULL,点击F8,未查到结果: 2.where 字段名='',点击F8,未查到结果: ...
- maven pom.xml 的 spring-boot-maven-plugin 红色报错 解决
解决方法,添加对应的spring boot 版本号即可
- spring boot --- 使用 注解 读取 properties 文件 信息
1.前言 以前使用spring MVC框架 ,读取properties 配置文件需要写一大堆东西 ,也许 那时候 不怎么使用注解 ,现在使用spring boot ,发现了非常简便的办法---使用注解 ...
- 详解Scrapy的命令行工具
接触过Scrapy的人都知道,我们很多操作是需要借助命令行来执行的,比如创建项目,运行爬虫等.所以了解和掌握这些命令对于scrapy的学习是很有帮助的! Scrapy 命令 首先,在scrapy命令中 ...
- 通过HTML+CSS+JavaScript实现鼠标移动到页面顶部导航栏出现,如果移出导航栏3秒又隐藏起来,而且不受滚动条影响(二)
通过HTML+CSS+JavaScript实现鼠标移动到页面顶部导航栏出现,如果移出导航栏3秒又隐藏起来,而且不受滚动条影响(二) 效果:默认一直隐藏导航栏,当滚动条滚到超过300px按钮出现,点击回 ...
- DbHelper 标准类
import java.io.*; import java.sql.*; import java.util.*; import javax.servlet.jsp.jstl.sql.*; public ...
- 【记录一个问题】golang中的time.Now()非常慢
对一个代码做profile: 总函数调用 29.74s 20.25s 153: timestamp := time.Now().Unix() 这样的一行占了20.25秒. 我知道linux下 time ...
- 2022GDUT寒假专题学习-1 B,F,I,J题
专题链接:专题学习1 - Virtual Judge (vjudge.net) B - 全排列 题目 思想 这道题可以用DFS进行求解,但是一看到全排列,其实可以立刻想到一个STL函数:next_pe ...
- gin中提供静态文件服务
package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { // 静 ...
- golang中打印格式化的一些占位符
package main import ( "fmt" ) func main() { var a byte = 255 // byte = uint8 rune = int32 ...