Author : QQ Zhou
大家应该很熟悉RFM模型,这是在做用户价值细分常用的方法。主要涵盖的指标有R(Recency);消费频率(Frequency);消费金额(Monetary);RFM模型在用户价值细分上具有很强的解释性和可操作性。但以下为了展示R是如何聚类算法及可视化。我们姑且用R、F、M三个指标聚类得出具有实用性和解释性的结论。
数据见文章最后。
步骤一:读入数据,查看数据。
#在此,我将原始数据存放在桌面,命名为customer_data.csv
#读入数据
customer_data=read.csv("C:\\Users\\Administrator\\Desktop\\customer_data.csv",header=TRUE)
#更改名称
names(customer_data)<-c("cust_id","total_amt","cnt","datetime")
#cust_id为用户id,total_amt是用户在指定时间内的总消费金额,cnt是用户在制定时间内的总消费次数,datetime为用户最近一次购买商品的时间
#查看数据
head(customer_data)
结果:
步骤二:数据处理
- 原始数据做变换,比如在此我们需要将最近一次访问时间(datetime)处理成最近一次访问时间到当前的时间间隔,即代表用户目前是否活跃
- 去变量之间的相关性(线性变换、主成分分析等)
- 去异常值
#原始数据变换
#将最近一次访问时间处理成最近一次访问时间到当前的时间间隔,代表该用户是否最近有购买记录(即目前是否活跃)
customer_data$datetime<-as.character.Date(customer_data$datetime)
customer_data$tm_intrvl=as.numeric(max(as.Date(customer_data$datetime,format="%Y%m%d"))-as.Date(customer_data$datetime,format="%Y%m%d"))+1
#去变量之间的相关性(在此做线性变换)
#先检查是否有相关性
cor(customer_data[,c("total_amt","cnt","tm_intrvl")])
#除去变量的相关性
customer_data$avg_amt<-round(customer_data$total_amt/customer_data$