首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

POINTer分享:我是怎么利用Python+RFM模型高

这是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.小数点数据

点点点,支持东哥继续分享

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190923A0D7JN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券