本文来自于公众号读者投稿。做者Suke,数据爱好者,主攻方向:数据分析,数据产品化。微信
RFM模型简介less
RFM模型是衡量客户价值和客户创利能力的重要工具和手段。本文介绍如何经过用户的交易行为的明细数据,利用Tableau对RFM模型进行实现,从而能够对其进行分析。ide
RFM模型是衡量客户价值和客户创利能力的重要工具和手段。该模型经过一个客户的近期交易行为、交易的整体频率以及交易金额三项指标来描述该客户的价值情况。函数
R-最近一次消费(Recency),一般影响因素为店铺的记忆强度,接触机会的多少,回购周期等。这个指标会用于决定客户接触策略,接触频次,刺激力度等。工具
F-消费频率(Frequency),一般影响因素为品牌的忠诚度,店铺熟悉度,客户会员等级,购买习惯等。这个指标会用于决定资源投入,营销优先级,活动方案决策等。学习
M-消费金额(Monetary),一般影响因素为消费能力和产品的承认度。这个指标会用于决定推荐商品,折扣门槛,活动方案等。spa
依据上述RFM这三个指标,能够将客户群划分为8类客户价值。.net
(图注:本图来自point数据分析课程讲义)3d
看到以上的8类客户价值,那咱们每一类客户的分布究竟是怎样的呢?如何才能算出咱们想了解的客户价值分类的客户占比?下面咱们就来看一下。
tableau实现的客户价值分类效果图
本次咱们使用tableau来探究RFM模型,tableau能把数据分为度量和维度两种。度量和维度的介绍能够参考下面连接:
https://help.tableau.com/current/pro/desktop/zh-cn/datafields_typesandroles.htm
能够在原数据的基础上,根据须要创建新的字段。只须要简单的拖拽,就能够很方便的做出图形。
◆ ◆ ◆ ◆ ◆
RFM模型实现
咱们分5步用tableau实现RFM模型。

Step1:数据预处理
这一环节主要是对数据格式进行处理,并添加新的数据列便于后续使用。本文数据使用tableau自带数据“示例-超市”,数据是客户在超市购物的清单,每件商品一条记录。打开tableau能够在连接到文件中加载数据源文件,或者直接双击打开tableau工做簿。
打开tableau加载数据
数据样例展现(部分字段)
加载数据源后,tableau会自动根据数据分为维度和度量两种数据列。先对数据源维度进行分组整理,如图中绿框中所示,分为产品,客户,订单,订单地区等,便于后续数据使用时的字段查找。数据源中的【销售额】字段为“¥43”这样的字符串,所以须要对其进行变换拆分,得到【销售额-拆分1】字段,并拖至度量区。
维度自动分组,拆分【销售额字段】

Step2:R值建设:最近一次消费(Recency)
首先建立【最近一次的购物时间】,而后经过最近一次消费时间计算【R最近一次购物距离当前的日期差】(也能够是对固定的日期),经过经验或者【R最近一次购物距离当前的日期差】的分布肯定【R参考值】,而后经过对比参考值与【R最近一次购物距离当前的日期差】的大小,标注出【R标记值】。最终效果以下:
最近一次下单时间分布
经过对【最近一次的购物时间】分布的观察可知,大部分客户在近期在超市有过购物行为。
操做步骤:
在维度或者度量的空白区域右键,点击建立计算字段。
建立计算字段
建立【客户最后一次下单时间】,其计算公式为{FIXED[客户 Id]:MAX([订单日期])}
(以下图所示),表示对于固定的客户,获取最大的(最近的)的时间,即为客户的最近一次下单时间。
建立【客户最后一次下单时间】字段
建立【R最近一次购物距离当前的日期差】,其计算公式为DATEDIFF('day',[客户最后一次下单时间],#2017-01-01#)
,表示对于固定的客户,计算最后一次下单的时间与2017年1月1日的日期差(因为数据均为2017年以前的数据,所以选择该日期为标准日期)。
建立【R参考值】,其计算公式为{FIXED:MEDIAN([R最近一次购物距离当前的日期差])}
,此处用【R最近一次购物距离当前的日期差】的中位数做为分界点。若是业务有能够参考的经验值,也能够直接把此处的公式替换为经验值。
建立【R标记值】,其计算公式为IF([R最近一次购物距离当前的日期差]>[R参考值]) THEN 0 ELSE 1 END
。查看【最近一次的购物时间】分布,如图进行配置,X轴为【客户最后一次下单时间】,y轴为【客户 Id】,选择快速表计算-总额百分比,能够获取每月的末次访问占总人群的百分比数量。
查看最近一次购物时间分布的设置步骤

Step3:F值建设:消费频率(Frequency)
首先建立【F客户累计单数】,而后经过经验或者【F客户累计单数】的分布肯定【F参考值】,而后经过对比参考值与【F客户累计单数】的大小,标注出【F标记值】。最终效果以下:
客户累计订单数分布
经过对【F客户累计单数】分布的观察可知,客户对超市的访问生命周期大约在5-7次。(此处是对历史累计单量进行讨论,也可因为业务的差别判断固定时间段内的订单数据)。
操做步骤:
建立【F客户累计单数】,其计算公式为{FIXED[客户 Id]:COUNTD([订单 Id]) }
,表示对于固定的客户,获取累计单数。
建立【F参考值】,其计算公式为{FIXED:MEDIAN([F客户累计单数])}
。
建立【F标记值】,其计算公式为IF([F客户累计单数]>[F参考值]) THEN 1 ELSE 0 END
。
查看【F客户累计单数】分布,先建立【F客户累计单数(数据桶)】(如图所示,桶的步长能够按照须要设定,此处设定为1),以【F客户累计单数(数据桶)】为X轴,【F客户累计单数】-计数 为Y轴,可获取【F客户累计单数】分布。
查看客户累计单数分布的设置步骤

Step4:M值建设:消费金额(Monetary)
首先建立【M客户累计金额】,而后经过经验或者【M客户累计金额】的分布肯定【M参考值】,而后经过对比参考值与【M客户累计单数】的大小,标注出【M标记值】。
操做步骤:
建立【M客户累计金额】,其计算公式为{FIXED[客户名称]:SUM([销售额])}
,表示对于固定的客户,获取累计单数。建立【M参考值】,其计算公式为{FIXED:
MEDIAN([M客户累计金额])}
。建立【M标记值】,其计算公式为IF([M客户累计金额]>[M参考值]) THEN 1 ELSE 0 END
。

Step5:客户价值分类建设
操做步骤:
建立【 客户价值分类】,其计算公式为
IF [R标记值]=1 and[F标记值]=1 and [M标记值]=1 then '重要价值用户'
ELSEIF [R标记值]=0 and[F标记值]=1 and [M标记值]=1 then '重要唤回用户'
ELSEIF [R标记值]=1 and[F标记值]=0 and [M标记值]=1 then '重要深耕用户'
ELSEIF [R标记值]=0 and[F标记值]=0 and [M标记值]=1 then '重要挽回用户'
ELSEIF [R标记值]=1 and[F标记值]=1 and [M标记值]=0 then '潜力用户'
ELSEIF [R标记值]=1 and[F标记值]=0 and [M标记值]=0 then '新用户'
ELSEIF [R标记值]=0 and[F标记值]=1 and [M标记值]=0 then '通常维持用户'
ELSEIF [R标记值]=0 and[F标记值]=0 and [M标记值]=0 then '流失用户'
END
查看【客户价值分类】客户分布,用【客户价值分类】做为X轴,用【客户 Id】-计数(不一样)做为Y轴,选择快速表计算-总额百分比。在【标记】部分复制【客户 Id】-计数(不一样)到【标签】(mac端操做为:鼠标选中同时按command或者control键),能够柱状图上显示出其在人群中的占比。
查看不一样RFM类型客户占比的设置步骤
至此,你就能够利用RFM模型作出一套完成的客户分类模型。利用该模型,分维度下钻研究,看客户在不一样地区,不一样客户类型,不一样产品品类上客户的表现。下图如下钻地区维度为例,能够看出西北地区的重要价值客户较多,客户构成比例较好。
按地区下钻的RFM模型
上述只是基础的RFM实现思路,可是其中关于分类维度的选取(如何定义R,F,M),划分阈值选取是做为一个分析师还可深刻探究。数据模型只是分析的开场白,还有不少业务内容是值得咱们去深究的。
为方便读者学习,做者提供了作好的tableau工做簿,能够在公众号后台回复:rfm 获取。
◆ ◆ ◆ ◆ ◆

以清净心看世界;
用欢喜心过生活。
超哥的杂货铺,你值得拥有~
长按二维码关注咱们
推荐阅读:
本文分享自微信公众号 - 超哥的杂货铺(gh_a624b94bfdab)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。