用R语言做购物篮分析案例详解:深入浅出关联规则

在大数据时代,各行各业每天都在不断地产生着大量各色各样的数据。对这些数据进行有效的挖掘,能够促进企业更好更精准的发展。这些数据能够帮助我们更精准地了解用户,从而制定出更贴合用户的运营策略,提升用户在平台的使用体验。购物篮分析是数据挖掘技术在零售业的典型应用之一,旨在从零售记录中分析出顾客经常同时购买的商品的组合,挖掘出购物篮中有价值的信息。

一、背景

关联规则就是从一种行为中发现与之相关联的另一种行为,即A→B,并用一定的概率度加以保证。关联规则广泛的应用在零售业、金融业和互联网行业。最典型的运用是购物篮分析,挖掘一般顾客在购买X产品的同时还会购买其他什么产品,于是制定相应营销策略,进行捆绑销售,增加销售量。又如金融业中,预测银行客户需求,如果数据库中显示,某个高信用限额的客户更换了地址,这个客户很有可能新近购买了一栋更大的住宅,因此会有可能需要更高信用限额,更高端的新信用卡,或者需要一个住房改善贷款,这些产品都可以通过信用卡账单邮寄给客户。电子购物网站也使用关联规则进行挖掘,一些购物网站使用关联规则设置相应的交叉销售,也就是购买某种商品的顾客会看到相关的另外一种商品的广告。

二、重要概念和原理

首先我们来看,什么是规则?规则形如"如果…那么…(If…Then…)",前者为条件,后者为结果。例如一个顾客,如果买了牙刷,那么他也会购买牙膏。

如何来度量一个规则是否足够好?有两个量,置信度(Confidence)和支持度(Support)。

举个例子。假设有10000个订单,其中购买了A产品的订单数是1000单,购买了B产品的订单数是2000单,同时购买了A产品和B产品的订单数是800单。

支持度(support):

简单的字面理解就是支持的程度。在所有的事务中同时出现A和B的概率,即P(AB)。支持度揭示了A和B同时出现的频率,如果A和B一起出现的频率非常小,那么就说明了A和B之间的联系并不大;但若一起出现的频率非常频繁,那么A和B总是相关联的知识也许已经成为常识而存在了。因此,上面例子的支持度就是:800/10000*100%=8%。

置信度(confidence):

置信度也称为可靠度,置信度表示了这条规则有多大程度上值得可信。所有事务中,在A出现的情况下B出现的概率,即P(B|A),P(B|A)=P(AB)/P(A)。因此,上面例子的置信度就是:P(AB)=8%,P(A)=1000/10000*100%=10%,P(B|A)=8%/10%=80%

置信度揭示了B出现时,A是否一定会出现,如果出现则其大概有多大的可能出现。如果置信度为100%,则说明了B出现时,A一定出现。那么,对这种情况而言,假设A和B是市场上的两种商品,就没有理由不进行捆绑销售了。如果置信度太低,那么就会产生这样的疑问,A和B关系并不大,也许与B关联的并不是A。

三、目的

购物篮分析 (market basket analysis)的目的在于在一个数据集中找出项之间的关联关系。例如,购买鞋的顾客,有10%的可能也会买袜子,60%的买面包的顾客,也会买牛奶。这其中最有名的例子就是"尿布和啤酒"的故事了。

四、应用

购物篮分析的主要应用如下:

①电商:

个性化推荐:在界面上给用户推荐相关商品

组合优惠券:给购买过得用户发放同时购买组合内商品的优惠券

捆绑销售:将相关商品组合起来销售

②超市

商品配置分析:哪些商品可以一起购买,关联商品如何陈列/促销

客户需求分析:分析顾客的购买习惯/顾客购买商品的时间/地点等

销售趋势分析:利用数据仓库对品种和库存的趋势进行分析,选定需要补充的商品,研究顾客购买趋势,分析季节性购买模式,确定降价商品

帮助供应商改进老产品及开发新品:通过购物篮分析,根据客户的需求,开发新的产品/改进老产品及产品包装

③电信与金融服务业:经由购物篮分析能够设计不同的服务组合以扩大利润;

④保险业:能藉由购物篮分析侦测出可能不寻常的投保组合并作预防。

五、案例详解

【数据源】

利用R进行购物篮分析,R中关联分析函数为arules,我们采用内置的Groceries的数据集。Groceries数据集的每一行表示一次交易记录,行中的每一列代表一个商品。将Groceries数据集导出csv,数据格式如下图1所示。

library(Matrix)

library(arules)

data(Groceries)

frequentsets=eclat(Groceries,parameter=list(support=0.05,maxlen=10))

inspect(sort(frequentsets,by="support")[1:10])#根据支持度对求得的频繁项集排序

图1 Groceries数据集格式

【数据统计】

对数据集Groceries进行描述性统计分析。输出结果如下图2所示,可从结果中提取到以下四部分有效信息:

①说明交易数据包含9835条交易记录,涉及到169种商品;

②列出了出现在购物篮中最为频繁的几种商品,如whole milk(全脂牛奶)出现在2513个交易记录中;

③列出购物篮中包含商品数量的交易条数,如有2159条交易仅购买1种商品,仅有1条交易购买32种商品;

④对购物篮中交易的商品数量进行汇总,包括五数和均值,Mean表示所有购物篮中平均含有4~5件商品;

summary(Groceries)#用summary函数对数据进行描述性统计分析

图2 描述性统计分析结果

Apriori关联分析

Apriori算法实现基本流程:

①选出满足支持度最小阈值的所有项集,即频繁项集;

②从频繁项集中找出满足最小置信度的所有规则。

算法用法:

apriori(data, parameter =NULL, appearance =NULL, control =NULL)

参数介绍:

data:数据;

parameter:设置参数,默认情况下parameter=list(support=0.1,confidence=0.8,maxlen=10,minlen=1,target=”rules”)

supp:支持度(support)

conf:置信度(confidence)

maxlen,minlen:每个项集所含项数的最大最小值

target:“rules”或“frequent itemsets”(输出关联规则/频繁项集)

apperence:对先决条件X(lhs),关联结果Y(rhs)中具体包含哪些项进行限制,如:设置lhs=beer,将仅输出lhs含有beer这一项的关联规则。默认情况下,所有项都将无限制出现。

control:控制函数性能,如可以设定对项集进行升序sort=1或降序sort=-1排序,是否向使用者报告进程(verbose=F/T)

算法使用:

接下来就是用apriori算法计算结果了。其实apriori算法特别好理解,就是只计算频繁集都特别高的子集。比如在我们数据集中,频繁集最高的单个商品是whole milk(全脂牛奶),那么,在计算并集的时候,从这个商品开始入手计算。节省了运行次数和空间。

由于默认的支持度为10%,可信度为80%,对于当前的9835条交易记录来说过高,使得没有这样的交易满足这两个条件。因此,如果使用Apriori算法的默认参数设置时将产生0条规则。故需要人为调整支持度和可信度,这里不妨将支持度设置为1%,即认为某种商品在购物篮中至少出现98次,可信度设置为30%,即认为同时出现某几种商品组合的概率为30%。

rule<-apriori(data=Groceries,parameter=list(support=0.01,confidence=0.3,minlen=2))

图3 输出结果图1

rule

inspect(rule)#查看频繁规则集

图4 输出结果图2

【结果导出】

导出数据,R结果如下,可以将结果导出到Excel表中,根据support大小来排序查看更有意思的结果。

write(rule, file ="C:/Users/THINK/Desktop/finalRule.csv", sep =",",col.names = NA)

部分结果如下图5所示。

图5 最终关联规则结果图

由以上可知,如果客户购买了citrus fruit和root vegetables,那么他有59%的概率买other vegetables。

六、购物篮分析注意事项

1. 如果对于大零售超市或商场,其SKU数一般都是几十万甚至上百万,产品梳理工作是一项很痛苦的工作,但如果要从数据角度进行产品运营,建议可以开展相应的产品梳理咨询项目,通过产品梳理,形成标准化的产品梳理流程及产品目录。在对某商场的产品梳理时候,发现目前的产品体系还是漏洞百出,很多还是很不规范的。做好关联分析或数据运营,请从产品梳理工作开始。

2. 注意购买产品赠送礼品的人为因素影响规则。有些挖掘师或分析师在做出关联分析后,看到了几条提升度及置信度都很高的规则,就兴奋不已地告诉客户:我觉得产品A和产品B有很大的关联性,从数字上看,捆绑销售肯定能够取得很好的销售效果。当拿到这样的结果的时候,客户很镇定地说:“你不知道我们在某月的时候,大量开展了购买产品A即可免费赠送产品B的活动么?”。对于这个时候的挖掘师是很悲催的。在筛选关联规则的时候,必须对该企业过去一年开展的活动有了解,还必须对不同时间段的主推产品进行提前沟通,确保关联规则不受人为因素影响。

3. 注意产品之间的位置摆放是否有很大的影响。在零售大商场中,产品摆放的位置对产品关联销售会产生很大的影响的,因为关联分析就是为了更方便地让顾客找到其需要的产品,购买更多其需要的产品。人流较大的两个相隔货架之间的产品关联性比较大,在我们项目中会发现不少的这样规则。但其结果表明了货架关联性比较大,摆放在一起就肯定比较合理的。但在进行关联分析的时候,客户更希望能从其他不相隔的货架之间找出更好的关联销售机会,这决定了后期的关联规则挑选难题。

4. 注意关联推荐的规则合理性及流失成本的大小。后期的关联推荐应用于主要是三个方面:①重购:继续购买原来的产品;②升级:购买更高档次的产品;③交叉销售:购买相关的产品。如果该规则的客户本来是买了50块钱的产品的,发现关联规则里面出现了推荐其购买30块的同类型产品,这等于给客户降档推荐了,会让销售额大幅减少,销售机会白白浪费并且造成了损失,所以在进行关联推荐的时候,那些涉及到了降档的规则一定要剔除。

后记

建议大家看完文章之后,找个时间动手尝试下,这样记忆更深刻。R语言直接在官网免费下载,数据源也在R语言内。本文用到的代码文件已整合好放在数据宝典公众号内,在公众号后台发送“购物篮分析”即可获得。



欢迎前往关注数据宝典公众号,更多数据分析知识分享,以及案例总结分享~~

在数据分析道路上,学无止境,终身成长。

你可能感兴趣的:(用R语言做购物篮分析案例详解:深入浅出关联规则)