这是POINT小数点的第287篇文章
点点写在前面:
知乎大V欧阳山东关于Python的新分享持续进行中,不得不说在小数点Python课堂学习几个月后他对Python理解越来越透彻,目前每周最期待的就是东哥的定时Python干货。这周他想通过Python实现RFM模型的方法告诉我们互联网公司是如何玩转用户的,又可以继续练起来啦!
是的,我们每个人在平台的眼里,价值都是不一样的。
比如一些天天上网购物,拆快递拆到手软的美女帅哥们,他们就是各个平台的高活跃高价值用户,他们要是哪天有停止购物准备跑路的痕迹,平台的运营朋友会急得想死,千方百计进行挽留,毕竟你是他们的衣食爹妈,死活得让你继续贡献软妹币。
还有一些用户就没这么好运了。
比如东哥这种死抠门,三年五年不见得出一次血,一个49块钱买的破衬衣要穿好几个春夏秋冬。这种的话,平台都懒得鸟你,你特么爱来不来,多一个不多,少一个不少,出门左拐,慢走不送。
那么平台是通过哪些维度进行用户价值判断与划分的呢?
今天的主角RFM模型就来告诉你答案。
—1—
RFM模型
有的人看到模型两个字,就瑟瑟发抖,以为要用各种数学公式,想都不想就一脸嫌弃。其实你误会了,RFM模型真的非常友好,要不然东哥这种纯文科生也搞不掂。
看名称你就知道,这个模型主要就是三个要素:
R,Rencency,就是最近一次消费是啥时候。比如你上次买姨妈巾是一个月前。
F,Frequency,就是你的消费频率,比如你一月来一次大姨妈,那你一个月会买一次姨妈巾,一年就是12次,当然也有人一次性买一年的,那么你的消费频率就低了,一年才1次。
M,Monetary,就是你的消费金额,有的人穷,买20块钱的;有的人富,姨妈巾都要镀金的,那么可能几百几千的。
嗯,相信你对RFM模型的三个指标已经非常清楚了。那么,RFM模型为什么成立呢?逻辑是什么?
逻辑也很简单:
1、最近买过的人,应该比最近没买过的人更有价值
2、一年来买10次的人,应该比一年来买1次的人更有价值
3、消费额度100的人,应该比消费1块钱的人更有价值
在这个逻辑下,我们就会对RFM的每个指标进行打分,最后算出RFM的总分,并以此来判断客户的分层。
当然每个公司对指标的侧重点不一样,所以赋分阶段也可以有所偏向。
—2—
数据准备
1、数据输入
这个数据里面字段比较多对不对?但是RFM模型只有三个指标,所以根本不需要这么多字段,那么我们只要选出模型所需要的字段即可。
2、字段选择
想要的数据字段有了,但你有没有发现,有的一个订单号拆分成了好几个?比如32号,拆成了3个,那么我们就得把这些东西给整合起来。
3、订单整合
这段代码看起来很简单,但是也包含了很多信息哦。比如数据分组、聚合、行及列索引重命名等。
好了,现在数据已经准备好了,开始建立模型。
—3—
建模过程
1、计算指标值
只有每个值都算出来了,我们才能根据这些值进行分层,从而判断不同用户的价值。
1.1、计算距今天数
这个是R值的基础。也就是用今天(我是9月13日做的)的时间减去用户每次消费的时间。知道用户每次消费距今的时间,我们才能筛选出距今最近的一次消费时间。
1.2、计算R\F\M值
用分组、聚合分别算出指标值,最后用merge函数进行拼接。当然用join、concat函数也行,根据自己的熟悉程度和习惯进行选择。
到现在为止,我们已经算出了RFM模型所有需要的所有值了。每个用户最近一次消费距今多少天,消费频次是多少,消费金额是多少,都知道了。
2、对指标进行分级
我们看到消费频次有1次到10多次的,那么我们就要对这些次数进行分级,相应的频次对应相应的等级,划分出用户价值。RFM模型分级一般分3到5级,我这里采用5分法。
2.1、给RFM的每个值进行打分评级
quantile是分位数函数,cut是切片函数,类似于tableau中的数据桶。
这一步是整个建模过程中最重要的一步,如何进行分组,是rfm模型的灵魂。分组不对,会直接影响你的模型应用效果。
如果你暂时没有经验数据,那么用分位数函数进行分组就是最科学的。
从结果看到,指标分级出来了。我们已经给每个用户的每个指标进行了打分。
有朋友会有疑问,R值打分是从5到1,而其他值是从1到5呢?
解释一下:因为R值是距今的天数,所以值越大,离现在越久,所以分数越低,价值越低,因此标签是倒过来的;而其他的指标,值越大,越有价值,比如消费额度越高越好,所以是顺序进行打分。
2.2、对RFM总分进行统计分级
每个指标的分数已经算出来,现在就要对各个指标进行赋分汇总。
因为在不同业务中,每个指标的重要性是不一样的,有的阶段,频率很重要,有的阶段,销售额很重要。所以需要区别对待。
就像我们大学的时候考试,平时成绩占40%,期末考试占60%
rfm模型也可以进行这样的赋分操作。
现在RFM总分出来了。我这里的赋分标准是倾向于消费金额的,消费额越大,分数越大。
这里astype(int) 很关键,因为涉及到数学运算,所以必须把对象转化为int整数型。
2.3、对每个用户价值进行判断
这就是RFM模型的最后一步,即根据rfm总分对每个用户进行贴标签,然后分层运营。
嗯,现在每个用户都有一个标签了。是不是感觉以后做用户运营更方便了呢?
—4—
模型可视化
1、人数汇总
这一步需要把每个标签的人数都统计出来,然后可以看分布情况,从而对用户整体能有个大致认知。
2、可视化柱形图
3、最终代码汇总
对的,复制上面代码,你就可以得到最终可视化结果图,是不是很简单呢?
—5—
写在后面
RFM模型应用非常广泛,无论是传统公司还是互联网公司,都可以进行。
同时,RFM模型也非常灵活,你可以对模型进行修正运用,比如在R、F、M上再加一些别的元素,有的公司折扣比较多,你就可以把折扣因素加上来。
另外你可能觉得客户划分成8个类型有点多,没这个必要,那么你可以只分成5类也未尝不可。只要符合实际业务就行。比如你可以把靠后的三个类型直接归结为低价值客户。
还要说明的是,RFM模型在分组贴标签的操作中也有不同的方法,比如我这里是用分位数方法,但是还有的应用中会选择平均数方法。不过我个人觉得,平均数方法做出来的数据并不那么准确。
最后说几句:
Python学习是个永无止境的过程。只要是技术,就越精越好。
这就要求我们要不断去实践,站在岸上学不会游泳,你只要亲自找数据做分析了,你才会不断碰壁,不断遇到困难,接下来你就会想办法解决这些问题,你的技术就在这个过程中慢慢变成熟了。
好了,本周的数据分析就到这里,我们下周继续
END
POINT.小数点数据
点点点,支持东哥继续分享
领取专属 10元无门槛券
私享最新 技术干货