本文来自于公众号读者投稿。作者Suke,数据爱好者,主攻方向:数据分析,数据产品化。
RFM模型简介
RFM模型是衡量客户价值和客户创利能力的重要工具和手段。本文介绍如何通过用户的交易行为的明细数据,利用Tableau对RFM模型进行实现,从而可以对其进行分析。
RFM模型是衡量客户价值和客户创利能力的重要工具和手段。该模型通过一个客户的近期交易行为、交易的总体频率以及交易金额三项指标来描述该客户的价值状况。
R-最近一次消费(Recency),通常影响因素为店铺的记忆强度,接触机会的多少,回购周期等。这个指标会用于决定客户接触策略,接触频次,刺激力度等。
F-消费频率(Frequency),通常影响因素为品牌的忠诚度,店铺熟悉度,客户会员等级,购买习惯等。这个指标会用于决定资源投入,营销优先级,活动方案决策等。
M-消费金额(Monetary),通常影响因素为消费能力和产品的认可度。这个指标会用于决定推荐商品,折扣门槛,活动方案等。
依据上述RFM这三个指标,可以将客户群划分为8类客户价值。
(图注:本图来自point数据分析课程讲义)
看到以上的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:客户价值分类建设
操作步骤:
创建【 客户价值分类】,其计算公式为
代码语言:javascript复制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),划分阈值选取是作为一个分析师还可深入探究。数据模型只是分析的开场白,还有很多业务内容是值得我们去深究的。