大家好,我是W
在数据挖掘中有一种关联分析算法叫做Apriori算法,大家可能都听说过啤酒尿布的故事,购买尿布的爸爸很可能会再去购买一份啤酒来犒劳自己,在大数据的背景下已经无法使用人工的方法去发现海量商品间的关联性,所以需要算法的支持。Apriori就是关联性分析算法的祖师级算法。接下来我们从下面几个内容来讲Apriori算法:1、相関概念 2、算法原理 3、Apriori算法实现 - 7500行购物清单案例 4、算法优劣分析。
1、 相关概念
在学习算法前需要了解一些特定名词,以及一些评估频繁项集的几个指标。
1.1 事务型数据
关联分析的数据一般是事务型数据,即数据每一行对应一个事务,事务的元素称为项,项集就是项组合成的集合,有1-项集、2-项集、k-项集。
1.2 支持度
一个项集的支持度就是该项集在整个数据集中出现的频率,例如:
数据集:
2,3,5,6
1,3,5
2,4
5,6,7
1-项集:3在数据集中的支持度为 2/4
具体的公式为:

1.3 置信度
置信度是指一个数据出现的情况下,某一数据出现的概率。或者说在购买A商品的情况下,继续去购买B商品的概率。其公式是:

A事件发生的情况下,B事件也发生的概率。
1.4 提升度
提升度是指在A事件的带动下B事件发生的概率与无A事件B事件发生的概率的比值,说人话就是有A和没A对B的影响比值。提升度就等于置信度比上B事件发生的概率。其公式是:

2、算法原理
Apriori算法的目的是通过刚刚提到的几个指标去找到物品之间的规则,如果使用最笨的方法,那么就是遍历出所有的组合,然后通过公式计算出支持度,通过支持度去计算置信度,通过置信度计算提升度。当置信度大于一定阈值的时候则可以认为两件物品的出现具有一定规则,并且物品A对物品B的提升度也可以计算。
但是我来给大家画张图看看这种做法的成本有多大,假设有物品1~5,用圆圈表示:

大家可以看到,只有五个商品就可以织出那么恐怖的网络,所以遍历的方法是不可取的。
2.1 非频繁项集的超集也是非频繁项集
因为并不是所有的物品都是频繁的,所以我们需要指定一个最小支持度来筛选出频繁的物品,并且依靠标题这一句**“非频繁项集的超集也是非频繁项集”**,我们可以实现剪枝操作。
为什么非频繁项集的超集也是频繁项集,我们感性的去认

本文深入探讨Apriori算法,一种用于发现商品间关联性的经典数据挖掘算法。讲解了算法的基本概念,包括事务型数据、支持度、置信度和提升度。详细介绍了算法原理,如何通过剪枝操作减少计算成本,以及在7500行购物清单数据集上的实现过程。
10万+

被折叠的 条评论
为什么被折叠?



