R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐

时间:2022-03-12 02:48:07

附注:不要问我为什么写这么快,是16年写的。

一、分析目的

I用户在某电商平台买了A,那么平台接下来应该给用户推荐什么,即用户在买了商品A之后接下来买什么的倾向性最大;

II应该把哪些商品在一起做捆绑销售。

二、理论介绍

数据挖掘中的经典算法之一:关联分析。关联分析内部理论又分为apriori , eclat , FP-Growth。这里采用apriori。关于他们的优缺点,适应条件什么的,只能等我看完理论再写了。

三、R包介绍

介绍将要用到的两个软件包:arules和arulesViz。

arules:关联规则的数字化生成,提供apriori和eclat这两种挖掘频繁项集和关联规则算法的实现函数。

arulesViz:实现关联规则的可视化。

四、数据准备

1.数据介绍:选取某电商平台2014年8月-2014年10月的交易数据,下图1所示,提取用户id、商品id两个字段;共204KB;csv格式。

图1 交易数据格式展示

R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐

2.数据形式

arules支持的数据输入格式有两种,transactions类型和tidLists类型。下图2和3所示。本文直接用read.transactions()读入图1的数据,通过设置参数,把数据转换成下图3的形式。具体可参考程序部分。

图2 transactions类型

R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐

图3 tidLists类型

R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐

五、运行结果及结论

数据概览如下图4:

结果显示,统计时间段内,购买最多的商品id分别是gtqf3891、fxr281 、kp1g3917、pzsm3922、h0i21683。所代表的商品分别是:

测试商品

xx正品全智能10000mah移动电源数显充电宝

xx宝纳庄园珍藏红葡萄酒双支礼盒装

xx乐薇丝桃红葡萄汽酒+汉凯沃德斯俱乐部起泡葡萄

xx先农氏 糙米·响水大米  2.5kg

这里发现一个问题,排在第一名的是测试商品,如果不分青红皂白的去和运营说,这段时间用户经常买的是"测试商品",就太囧了,所以算法不是全部,业务才是王道啊。

图4 数据概览

R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐

关联规则如下图5:

下面是设定支持度阈值为0.002,按照置信度大小排序的结果,糟糕的是此刻在家,连不上数据库,所以我只知道商品id,不知道其代表的真实商品,没有办法做具体分析。明天晚上补上这部分。从下图5可知如果用户在该平台购买了商品k2l34304,那么接下来用户最有可能购买的商品是fxr281,系统便可以自动给用户推荐fxr281,以达到提升销量的目的。

图5 关联规则

R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐

补充:查阅数据库后得知图5前四条规则分别代表着:

xx系列石英男表

xx正品全智能10000mah移动电源数显充电宝

测试商品3

测试商品

三星Class10-48MB/S TF卡 16GB

xx乐薇丝桃红葡萄汽酒+汉凯沃德斯俱乐部起泡葡萄

红米note 移动4G增强版

xx正品全智能10000mah移动电源数显充电宝

即购买商品“xx系列石英男表”的用户接下来最有可能购买的是“xx正品全智能10000mah移动电源数显充电宝”;而购买了商品“红米note 移动4G增强版”的用户接下来更倾向于购买“xx正品全智能10000mah移动电源数显充电宝”等,平台便可根据此信息采取相应的营销活动。

和商品fxr281捆绑销售的结果:

假设平台的运营者想要促销商品fxr281(xx正品全智能10000mah移动电源数显充电宝),那么我们便可找到fxr281的强关联商品,来作为捆绑商品。下图6显示商品k2l34304(xx系列石英男表)和u2xm6551(红米note 移动4G增强版)是商品fxr281的强关联商品,因此平台运营者可考虑将k2l34304或u2xm6551和fxr281捆绑起来共同销售,并制定一个合适的共同购买价格,从而对两种商品都产生促销效果。这一步在程序中我把maxlen设为2,控制lhs中仅包含一种商品,这是因为在实际的情形中,一般只将两种商品进行捆绑,而不是一堆商品。(maxlen设置为多少要根据实际业务来,我已经迫不及待想接手这样的项目了。)

图6 fxr281捆绑销售的结果

R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐

关联规则的可视化:

图7按照lift参数来看,关联性(颜色最深)最强的为:{trz83012} => {deyc3994}。

图7 可视化

R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐

六、程序

#载入关联分析的包
library(arules)
#读入数据
dx=read.transactions("C:/Users/Thinkpad/Desktop/1.csv",format="single",sep=",",cols=c(1,2))
#展示数据的前一百行
inspect(dx[1:100,])
#看交易数据的总体情况
summary(dx)
#随便给参数设置一个初始值,支持度设定为0.001,置信度设置为0.5,结果有11425条规则
rules0=apriori(dx,parameter= list(supp=0.001,conf=0.5,target="rules"))
inspect(rules0[1:10,])
#不断调整支持度以得到前几条规则,支持度设为0.002,结果有12条规则
rules1=apriori(dx,parameter= list(supp=0.002,conf=0.5,target="rules"))
rules1
inspect(rules1)
#给定支持度阈值0.002,按置信度排序
rules.sorted_con=sort(rules1,by="confidence")
inspect(rules.sorted_con)
###捆绑销售###
###想促销商品fxr281,找到与之有关的相关联规则#####
rules2=apriori(dx,parameter=list(maxlen=2,supp=0.002,conf=0.5),appearance=list(rhs="fxr281",default="lhs"))
inspect(rules2)
##########关联规则的可视化#####
library(arulesViz)
plot(rules1,method="grouped")

七、附注

关联分析一定要紧跟业务,如你发现了一条强关联规则:苹果→苹果醋。你非常开心激动地想把他推荐给运营,但运营告诉你上个月他们做了促销,买苹果就送苹果醋。所以.....你就悲剧了,你的老大不灭了你才怪。

end!