亚洲资本网 > 栏目首页 > 企业家 > 正文
基于RFM和K
2023-08-03 22:24:24来源: 个人图书馆-tuzhanbei2010


(相关资料图)

一、项目背景

在本项目中,我们基于用户购买数据(Transaction Data)做用户的分群,使用的方法一次是RFM模型和K-means算法。 数据来源:

二、数据的读取
二、数据清洗
df
三、使用RFM模型

到目前为止,Recency, Frequency, MonetaryValue都是数值型的。 为了用户分群,我们需要把R,F,M的值分别需要映射到bucket中,比如Recency的值映射到1,2,3,4中的某一个数值上; Frequency映射到1,2,3,4中的某一个数值上,MonetaryValue也做同样的处理。 这里需要注意的一点是:值越大就说明用户越有价值,比如R=4的用户要比R=1的用户的价值更大。 所以当我们尝试映射的时候,也需要注意这一点。 因为Recency越大说明好久没有买了,所以这时候映射之后的数要越小; 相反,对于Frequency字段,这个值越大就说明用户购买次数越多,映射之后的值也需要越大; 所以我们需要考虑这一点。

接下来计算一下RFM_Score。这个值越大说明,说明这个用户价值越大。对于Score可以有不同的计算方式。但在这里我们使用最简单而且最经典的计算方法,其实就是把所有的值加在一起。 比如一个客户的 R=1, F=2, M=3, 则这个客户的RFM_Score为6。

data_rfm

上述通过阈值的方式来分群的操作有什么缺点? 因为Recency 和 Frequency 与MonetrayValue有不同的分布且可能彼此之间相关,通过阈值划分阈值界线来划分数据并不能反映分布上的区分性

四、基于K-means算法的分群

接下来我们通过使用k-means算法来对用户分群,使用的值仍然是Recency, Frequency, Moneytary Value. 当我们使用k-means算法的时候经常需要做预处理工作,因为算法依赖于距离的计算,而且R,F,M的值的范围差别很大。

对于预处理,我们做如下2个方面的工作:

即使针对于某一个属性,它的值差别很大,所以我们先使用log transform把值做个转换使用归一化操作把值映射到 N(0,1),使用的是sklearn里的 StandardScaler
data_rfm

基于以上的这幅图,我们通过拐点法来选出3个最好的K值。 簇内离差平方和拐点法的思想很简单,就是在不同的K值下计算簇内离差平方和,然后通过可视化的方法找到"拐点"所对应的K值; 通过可视化方法,重点关注的是斜率的变化,当斜率由大变小时,并且之后的斜率变化缓慢,则认为突然变化的点就是寻找的目标点,因为继续随着簇数K的增加,聚类效果不在有大的变化这时k应该是相对比较合理的值,所以这里可以选择K值6

km1 
data_new
df

关键词:

专题新闻
  • 滑县司法局开展“八一”建军节慰问活动
  • 舒泰神:公司国内有研发项目在分析测试方向与供应商开展常规业务往来
  • 8月2日南宁东沟岭卫生服务站九价hpv疫苗开放预约
  • ​厦门市同安区市场监督管理局关于4批次不合格食品风险控制情况公示
  • 以案说法 | 定制家具图纸你看清了吗?别等做好了才打官司
  • 圆周长公式是多少,圆周长公式怎么算的

京ICP备2021034106号-51

Copyright © 2011-2020  亚洲资本网   All Rights Reserved. 联系网站:55 16 53 8 @qq.com