美文网首页
购物篮分析(1)——关联规则Apriori原理

购物篮分析(1)——关联规则Apriori原理

作者: 扫地sir | 来源:发表于2023-06-07 20:36 被阅读0次

什么是关联规则

关联规则算法Apriori的原理是基于购物篮分析的思想。它可以帮助我们发现项集之间的关联关系,例如超市购物时经常出现的商品组合,比如牛奶和面包,牛奶就是一个项,面包也是一个项,牛奶和面包的组合就是一个项集。这种算法可以在大规模数据集中寻找频繁项集(经常一起出现的商品组合),然后根据这些频繁项集生成关联规则。假设我们有一个超市的销售数据,里面记录了多个顾客的购物清单。我们想要找出哪些商品经常一起被购买,以便超市可以根据这些关联关系进行商品搭配和促销活动。

关联规则的实现步骤

Apriori算法的实现逻辑主要有两个步骤:生成候选项集和剪枝。

第一步是生成候选项集
假设我们有一个包含多个交易的数据集,每个交易都是一个包含不同商品的集合。首先,算法会扫描数据集,统计每个商品的支持度,即该商品在所有交易中出现的频率。然后,根据设定的最小支持度阈值,选择支持度高于阈值的商品作为频繁1-项集。
接下来,算法通过组合频繁1-项集生成候选2-项集,然后再次扫描数据集计算候选2-项集的支持度,并选择支持度高于阈值的候选2-项集作为频繁2-项集。
这个过程会一直进行下去,每次生成候选k-项集,计算支持度,然后选择支持度高于阈值的候选k-项集作为频繁k-项集,直到无法生成更多的频繁项集。

第二步是剪枝
在生成候选k-项集的过程中,会存在一些不频繁的子项集。为了避免浪费计算资源,Apriori算法会使用一种叫做Apriori原则的剪枝策略,即如果一个项集是不频繁的,那么它的所有子集也是不频繁的,这样的规则就被抛弃掉。通过这种剪枝策略,可以减少不必要的计算量。

关联规则的意义

假设在超市的销售数据中,经过计算发现频繁项集中有以下三个商品组合:牛奶和面包、牛奶和糖果、面包和糖果。这意味着很多顾客在购买牛奶时也会购买面包或糖果。因此,我们可以得到一些关联规则:
1.如果顾客购买牛奶,那么他们购买面包的概率很高。
2.如果顾客购买牛奶,那么他们购买糖果的概率也较高。
这些关联规则可以帮助超市制定促销策略。例如,超市可以将牛奶和面包放在一起销售,或者在购买牛奶时提供购买面包或糖果的优惠券,以鼓励顾客购买面包或糖果。

关联规则中的三个重要概念

下面我们重点说明算法中的支持度、置信度和提升度这三个概念,并结合案例进行解释。
1.支持度(Support):支持度是指一个项集在所有交易中出现的频率。在关联规则中,支持度用来衡量一个规则的普遍性或者重要性。支持度可以通过以下公式计算:支持度 = (该项集的交易数)/(总交易数)。

通常状况下,为了减少计算量,增加计算效率。我们会提前定义一个阈值作为频繁项集的判断标准,比如定义阈值为0.1,那么只有支持度大于0.1的项集或者说商品组合才会出现,支持度小于0.1的项集则被抛弃掉。

2.置信度(Confidence):置信度是指当一个项集A出现时,另一个项集B也出现的概率。在关联规则中,置信度用来衡量两个项集之间的关联程度。置信度可以通过以下公式计算:置信度 = (同时包含项集A和B的交易数)/(包含项集A的交易数)。

3.提升度(Lift):提升度是指当一个项集A出现时,另一个项集B的出现概率相对于B的整体出现概率的提升程度。提升度可以用来衡量项集A和B之间的依赖关系和相关性。提升度可以通过以下公式计算:提升度 = (置信度)/(B的支持度)。

案例

假设我们有一个在线零售商的销售数据,其中包含了顾客的购物记录。我们想要了解哪些商品经常一起购买,并分析它们之间的关联程度。假设我们有100个交易记录,其中有60个交易包含了商品A,50个交易包含了商品B,同时有40个交易同时包含了商品A和B。

现在,我们可以通过计算支持度、置信度和提升度来分析这些商品之间的关联程度。

支持度(Support):支持度用来衡量一个项集在所有交易中出现的频率。我们可以计算商品A和B的支持度。
支持度(A) = 60 / 100 = 60% (商品A出现的交易数 / 总交易数)
支持度(B) = 50 / 100 = 50% (商品B出现的交易数 / 总交易数)

置信度(Confidence):置信度用来衡量当一个项集A出现时,另一个项集B也出现的概率。
置信度(A ➞ B) = 40 / 60 = 66.7% (同时购买商品A和B的交易数 / 购买商品A的交易数)
这意味着当顾客购买了商品A时,有66.7%的概率他们也会购买商品B。

提升度(Lift):提升度用来衡量当一个项集A出现时,另一个项集B的出现概率相对于B的整体出现概率的提升程度。
提升度(A ➞ B) = 置信度(A ➞ B) / 支持度(B) = 66.7% / 50% = 1.334
提升度为1.334表示当顾客购买商品A时,他们购买商品B的概率比B的整体购买概率高1.334倍。

通过这个案例,我们可以解释支持度、置信度和提升度这三个概念。支持度衡量了商品在整体数据中的普遍程度,置信度衡量了当一个商品出现时,另一个商品出现的概率,而提升度衡量了购买一个商品对另一个商品出现概率的影响程度。这些指标可以帮助我们发现商品之间的关联关系,并为商业决策提供依据。比如,在这个案例中,如果我们发现提升度高于1,那么我们可以考虑将商品A和商品B放在一起促销,因为购买商品A的顾客更有可能购买B商品。

这里要指出,提升度的取值范围从0到正无穷大,不同的取值和对应的不同的意义:

提升度小于1:
当提升度小于1时,表示项集A和项集B之间存在负相关性。也就是说,购买项集A会降低购买项集B的概率。这可能是因为两个项集之间的竞争关系,或者顾客更倾向于购买其中的某个商品而不是两者都购买。

提升度等于1:
当提升度等于1时,表示项集A和项集B之间没有关联性。也就是说,购买项集A并不会对购买项集B的概率产生影响。这意味着两个项集在顾客购买行为中是独立的。

提升度大于1:
当提升度大于1时,表示项集A和项集B之间存在正相关性。也就是说,购买项集A会增加购买项集B的概率。这表明两个项集之间的购买行为是相互促进的,它们往往会一起出现。

具体的提升度取值越高,表示项集A和项集B之间的关联性越强。提升度的意义在于帮助我们理解项集之间的购买关系和相互影响程度。较高的提升度值可以用作制定市场营销策略和推荐系统的依据。例如,当发现某个项集的提升度较高时,可以将这些项集放在一起促销,或者提供相关商品的推荐,以增加销售量和顾客满意度。

需要注意的是,提升度仅衡量了项集之间的关联性,而并不能确定因果关系。因此,在解读提升度时需要综合其他因素和领域知识进行判断。

实现方式

计算关联规则的方案很多,后续我会通过两篇文章介绍使用不同工具计算关联规则。
第一篇使用Tableau来完成。由于Tableau本身没有关联规则的算法,我们通过数据集自连接(join)的技术手工完成计算。
第二篇我们使用Knime和Python来完成。Knime可以使用关联规则节点自动计算规则,Python则需要调用相关算法库来完成。

相关文章

网友评论

      本文标题:购物篮分析(1)——关联规则Apriori原理

      本文链接:https://www.haomeiwen.com/subject/dkkoedtx.html