购物篮分析可以利用哪个算法

核心提示来源:数据STUDIO作者:云朵君导读:本文介绍了关联规则原理及Apriori算法实现购物篮分析,以一个真实案例辅助理解关联分析。背景与需求客户A企业是一家全球知名家具和家居零售商,销售主要包括座椅/沙发系列、办公用品、卧室系列、厨房系列、

来源:数据工作室

作者:云云君

引言:介绍关联规则原理和Apriori算法实现购物篮分析,用一个真实案例帮助理解关联分析。

背景和需求

客户企业A是全球知名的家具家居零售商,销售约10000种产品,包括座椅/沙发系列、办公用品、卧室系列、厨房系列、照明系列、纺织品、炊具系列、家居收纳系列、儿童用品系列等。为了维持客户忠诚度,扩大销售,A公司希望通过客户现有的购买记录向客户推荐更多的产品。请用关联规则的方法来实现客户的需求。

相关资料

purchase.csv中存储的客户交易记录,RA_desc.csv是商品类别号对应的含义,PA_desc.csv是商品类别号对应的含义。本案例只涉及客户交易记录,因此purchase.csv描述如下:

商品编号代表具体的商品,每个商品都有自己的分类——商品子类和商品类别,商品类别又包括商品子类;比如商品编号为40165961,是“28x28灰色煎锅”。它的商品类别是141,也就是炊具,它的商品类别是14,也就是purchase.csv表是一个客户每次购买一件商品的交易记录。位置。ID是店内POS收银机的序列号。主卡是会员卡号和收据的序列号。收据上的商品序列号在其他字段都很清楚,这里就不赘述了。理论基础

什么是购物篮分析?

单个顾客一次购买的商品的总和称为购物篮。思路是分析商品之间的关系。

常用的算法有两种:不考虑购物顺序的关联规则;以及考虑购物顺序的顺序模型。

蓝色购物分析主要用于超市货架布局、互补产品和互斥产品、包装设计和捆绑销售。

关联规则的概念

是n个不同项目的集合,称为一个项目。

项目的集合称为项目集合,简称项目集。元素的个数称为项集的长度,有长度的项集称为项集。

每个事务都是项目集的子集,即

所有的交易构成一个交易记录集,简称为交易集,交易集中包含的交易数记为

设A和B是两个项集,那么关联规则如下,其中,,,和

支持和信心

对于关联规则,定义以下两个指标

支持度

是两种商品出现在销售总数中的概率,即同时被购买的概率。

支持度表示规则是否具有普适性。

可信度

置信度是一个条件概率,表示购买a后购买B的概率。

一个小例子计算支持度和信心。

如下五个购物篮,每个都标有商品标签。现在支持度和信心度都是按照规则计算的。

根据支持度

规则支持置信度a = > D2/52/3c = > A2/52/4a = > C2/52/3b c = > D1/51/3

提升度

提升度表示先购买对购买概率的提升作用。

提升的程度是两种可能性的比较,一种是在已知已经购买了剩余商品的情况下购买正确商品的可能性,另一种是在任何情况下购买正确商品的可能性。

只有推广度的值大于1,说明关联规则真的有效,A商品卖得越多,B商品就卖得越多。而促销度等于1则意味着产品A和b之间没有相关性,最后,如果促销度小于1,则意味着购买A会降低b的销量。

另外,和的晋升程度是一样的。

关联规则挖掘

关联规则挖掘的定义:给定一个事务数据集T,找出所有支持度和置信度满足一定条件的关联规则。最简单的方法是枚举项目集的所有组合,计算并判断每个组合是否满足条件。长度为n的项集的组合数是多少?

如何快速挖掘出符合条件的关联规则是关联挖掘中要解决的主要问题。Apriori算法是解决这一问题最流行的算法。

Apriori算法

生成频繁项目集

在这个阶段,找到满足最小支持度的所有项集,这些项集称为频繁项集。

Apriori基于以下两个核心原则生成频繁项集:

如果一个项集是频繁的,那么它的所有子集都是频繁的。如果子集不是频繁的,则包含它的所有项集都是不频繁的。

利用Apriori算法的思想,可以去掉很多不频繁的项集,大大简化计算。

生成规则

在前一步生成的频繁项集的基础上,生成满足最小置信度的规则,生成的规则称为强规则。

挖掘关联规则花费的时间主要在生成频繁项集上,因为发现的频繁项集往往不多,所以利用频繁项集生成规则不会花费太多时间。

Apriori算法步骤

第一步:所有单个项目都是候选项目集C1,任何支持度小于给定最小支持度的项目都将从候选项目集C1中删除,形成频繁单项目集L1。

连接步骤:两个L1自连接形成两个项目的候选项目集C2。

剪枝步骤:通过再次扫描事务集来确定这些候选的支持度,保留大于预先给定的最小支持度的候选,形成频繁2项集L2。

最后一步是用三个项目组成候选项集C3,重复上述步骤,直到找到所有的频繁项集。

Apriori算法的优缺点

Apriori算法利用了频繁集的两个特性,过滤了许多无关集,提高了效率。

Apriori算法是一种候选淘汰算法。每次消除都需要扫描所有数据记录,这使得整个算法在面对大数据集时显得力不从心。每次生成频繁项集时,都需要进行全表扫描。

项目实战

要使用mlxtend.frequent _ patterns实现关联规则,您需要安装并导入库:

pip安装mlx tend from mlx tend . frequency _ patterns导入先验的关联规则

数据预处理

pd.read_csv

思考:建模之前,需要对数据进行处理,思考如何定义购物篮,使用哪些字段?

这里我们定义三个字段,两个原始字段:交易号和商品类别,一个衍射字段:交易号。

Col1 = '交易号' col2 = '商品类别' col3 = '次数' purchase _ df.pivot _ table

找到频繁项集并排序。

我们设置的最小支持度是0.6,所以只有支持度大于0.6的项才是频繁项集。

frequent _ items ets = apriori frequent _ items . sort _ values

参数df:数据集。Min_support:给定的最小支持度。Use_colnames:默认为False,返回的项目组合将按编号显示;如果为真,将直接显示项目名称。Max_len:项目组合的最大数量,默认为无,没有限制。如果只需要计算两项的组合,则将该值设置为2。

支持项目集50 . 48686868686.........

查找关联规则

我们使用Apriori来获得频繁项集。然后我们可以在频繁项集的基础上发现关联规则。用来计算关联规则的是上面提到的置信度和提升度。

这里需要注意的一点是,当我们发现置信水平高的时候,反值的置信水平不一定高。

Association _ rule = Association _ rules Association _ rule . sort _ values #关联规则可以按杠杆排序。

参数df:Apriori计算的频繁项集。度量:可选值['支持','信心','提升','杠杆','信心'],其中信心和支持是常用的。此参数与下面的min_threshold参数一起使用。Min_threshold:参数类型为浮点型,根据metric可选值的不同有不同的范围。metric = 'support' [0,1]metric = 'confidence '值范围[0,1]metric = 'lift '值范围[0,inf]support_only:默认为False。只计算有支持度的项集,如果支持度缺失,则用nan填充。

上表中各字段的含义为:前件:前件支持度:前件支持度:偶发事件支持度:偶发事件支持度:规则置信度:规则置信度提升度:规则提升度,表示两个前件的概率与偶发事件总发生概率的比值。一般大于1才有意义Lift =置信度/支持区间:[0,INF]杠杆率:当杠杆率= 0时,A和C是独立的,杠杆率越大,A和C的关系越密切,杠杆率= support-support * support,range: [-1,1]确信:这个值越大,A和C的关系越密切。信念= [1 -支持] / [1 -信心],范围:[0,inf]

在上面的例子中,我们可以发现{18,11 -> 15}的置信度是0.99449,而它们的提升度是1.468292。这说明买了{18,11}的人很可能会再买1.468份15。所以可以一起卖。

好了,我相信通过这个案例,我已经可以了解Apriori算法的原理和使用方法了。当然Apriori只能算是一个基本的关联挖掘算法,还有其他的关联挖掘算法,比如FP-growth等等。

 
友情链接
鄂ICP备19019357号-22