表1 数据准备示例(gouwuche.csv)
【R代码】R中我们用到的是arules程序包,算法是apriori。首先载入这个程序包。
> library(arules)
然后导入数据gouwuche.csv
> gouwuche <- read.csv("gouwuche.csv",header=TRUE) #默认工作空间为D盘R文件夹
导入数据之后,我们可以通过names来查看表头或其他操作。如果发现数据是乱码,可以先把csv 用txt打开,另存为ANSI格式进行转码。当然,这一步也可以直接省略。
直接读取每笔订单数据。在这里我们用到的format是single,因为我们数据准备是一行一个商品。如果数据准备是按照订单分行的,则使用format=“basket”。在第二个案例中我将使用第二个format。
>gouwuche<- read.transactions(file = "gouwuche.csv",format ="single",sep = ",",cols =c("orderNo","goods_name"),rm.duplicates = TRUE)
接下来就是用apriori算法计算结果了。其实apriori算法特别好理解,就是只计算频繁集都特别高的子集。比如在我们数据集中,频繁集最高的单个商品是库尔勒香梨,那么,在计算并集的时候,从这个商品开始入手计算。节省了运行次数和空间。
>gouwuche.apriori <- apriori(data =gouwuche, parameter = new("APparameter",support = 0.03,confidence =0.4))
在这里,我选择了支持度为0.03,也就是3%水平以上的规则集(也就是规则集出现的频繁度为3%,即100个购物篮中,该规则集出现的频次为3个),信度在0.4水平以上。
大家可以根据自己的项目实际情况来调整支持度、信度。
然后就是查看符合参数的规则集了,用inspect。如果在这一步发现符合参数的规则集过少,可以在上一步调整参数。
> inspect(gouwuche.apriori)
> write(gouwuche.apriori, file = "finalRules.csv",sep = ",", col.names = NA) #保存规则集结果,并将其命名为finalRules
R部分结果如下,仅供参考。购买了lhs商品的用户,其中有support%的用户也会一并购买rhs(注意只选取lift提升度大于1的结果,有指导意义)。
通过这两个规则集我们能发现,同品类不同口味反而是促进消费而非竞争。同样也说明,同一品类扩充口味是多么的重要。呵呵哒。
当然,我们也可以仅仅查看频繁集,也就是哪几种商品被同时购买的几率更高。
>gouwuche.eclat<-eclat(data=gouwuche,
+parameter=new("ECparameter",support=0.05,minlen=2))
>inspect(gouwuche.eclat) #查看频繁规则集
R结果如下,可以将结果导出到excel表中,根据support大小来排序查看更有意思的结果。
items support
1 {琯溪蜜柚,四川安岳柠檬} 0.05371130
2 {赣南脐橙,四川安岳柠檬} 0.05706826
【结果解读】好了,代码+运算部分已经介绍完毕。现在我们有了频繁规则集结果和前项后项规则结果,那么怎么运用到业务上呢?
此处必须有废话。
通过商品合并购买来揣测我的用户。通过商品一级品类的购物篮分析,发现用户经常购买的是水果和乳品,这两款品种十分契合下午茶场景,说明我们的用户群体中,是办公室白领、比较喜欢下午茶的人群比例有多少。其次是果蔬+乳品,这两款品种十分契合居家生活场景,说明在我们的用户群体中,做饭居家的用户比例有多少。这只是给公司各级别的同事一个基础的数据概念。
有了这些数据佐证,我们一方面可以告诉商品在这几类品种上,不断扩品和扩类,另一方面可以指导运营,在合适的时间(下午茶时间和下班买菜时间)进行合适的品类秒杀和促销。
优惠券策略。如果要发放优惠券撬动销售额,那么发放什么品类优惠券合适?如果要进行促销,那么促销品中加入哪款商品能促进该促销品的销售?
如果运营要制定下午茶活动,或者是菜市场活动,选那些品比较合适?为什么要制定这么场景类的活动?
根据起飞价,来制定爆款品定价,坚决不让爆款品组合刚好够起飞价,嘿嘿嘿。
通过商品合并购买来揣测我的用户。通过商品一级品类的购物篮分析,发现用户经常购买的是水果和乳品,这两款品种十分契合下午茶场景,说明我们的用户群体中,是办公室白领、比较喜欢下午茶的人群比例有多少。其次是果蔬+乳品,这两款品种十分契合居家生活场景,说明在我们的用户群体中,做饭居家的用户比例有多少。这只是给公司各级别的同事一个基础的数据概念。
有了这些数据佐证,我们一方面可以告诉商品在这几类品种上,不断扩品和扩类,另一方面可以指导运营,在合适的时间(下午茶时间和下班买菜时间)进行合适的品类秒杀和促销。
优惠券策略。如果要发放优惠券撬动销售额,那么发放什么品类优惠券合适?如果要进行促销,那么促销品中加入哪款商品能促进该促销品的销售?
如果运营要制定下午茶活动,或者是菜市场活动,选那些品比较合适?为什么要制定这么场景类的活动?
根据起飞价,来制定爆款品定价,坚决不让爆款品组合刚好够起飞价,嘿嘿嘿。
太多了。根据你和你的领导的脑洞,请大家再来补充结果的运用吧。
(二)关联分析经验—在某场的实战运用
刚才是实打实的购物篮分析,其实运用的是关联分析的一套计算法则,只不过是以购物篮的形式进行容器化了而已。那么实际上,关联分析还可以这样运用。
某场是信息流分类网站,有房产,有招聘,有二手车等不同业务类型。那么,一个用户很可能对哪几个类别信息感兴趣呢?大概比例是多少?在此之前,大家都不清楚各个类别之间,用户的重合度有多少。下面这个实战,就是解开这个谜团。
【数据准备】审题发现,我们要从数据库中提取每一个用户在一段时间内都点击了哪些类别的信息。那么数据准备以用户唯一标识为行,分列呈现该用户点击的业务类别。行标签为userid, cateid1, cateid2,,,。很明显,和刚才第一个实战的数据格式不一样。
还有一点,我只选取了点击过两个业务类别以上的用户,因为我的目的就是要分析多类别点击的用户。
【R代码】可以参考第一个实战,唯一区别是在做apriori的时候,将format更换为basket。
【结果解读】在这里顺便把关联规则中几个指标介绍下。Support是前项和后项组合点击用户比例,support是前项用户中,点击后项的比例,lift是前项和后项的相关度,大于1为正相关,只参考大于1的结果集。
R结果整理成excel表格如下所示(数据仅供参考,非真):