Advertisement

Frequent Pattern Mining(频繁模式挖掘) - Aprior挖掘算法

阅读量:

频繁模式挖掘(Frequent Pattern Mining)是一种用于发现数据集中频繁出现的项目组合的技术。通过分析超市销售数据,如故事中提到的“啤酒”与“尿布”常出现在同一购物篮中,可以识别出频繁项集,即频繁出现在数据中的项目集合。Apriori算法是实现频繁模式挖掘的经典方法,其核心思想是通过扫描数据集生成频繁项集,并通过剪枝操作减少不必要的计算。具体步骤包括:1)扫描数据集获取频繁1-项集;2)生成候选2-项集并计算其支持度;3)剪枝不符合条件的候选项集;4)重复上述过程直到所有频繁项集生成。最终,通过计算置信度等指标,可以提取出强关联规则,如“A->B”的形式。

Frequent Pattern Mining(频繁模式挖掘) - Aprior挖掘算法

在开始之前,先看一个故事:

故事发生在20世纪90年代的美国沃尔玛超市里。沃尔玛超市的管理人员通过分析销售数据,揭示了一个令人难以理解的现象:在特定情况下,看似毫不相关的"啤酒"和"尿布"常被顾客同时购买。这一现象引起了管理人员的重视。进一步调查发现,这一现象主要出现在年轻父亲的购物 basket 中。因此,管理人员将啤酒和尿布的货架布置得很接近,既提升了销售量,又方便了顾客的购物。

在本节中,我们介绍了一种称为频繁模式的有趣现象。这种模式被称为频繁项集,即由频繁出现的项目组成的集合。在这里,我们有两个项目,因此也可以将其称为2项集。

这个小故事实际上就是频繁模式挖掘的一个典型应用场景,具体体现在超市货架的布局问题上,而另一个经典案例则是推荐系统。值得注意的是,在深度学习兴起之前,一些数据挖掘算法同样能够取得不错的成效。

Aprior挖掘算法

直接看例子.

该表格可以被视为超市销售数据的记录。例如,第一行对应Tid为10的一位顾客,购买了{糖、可乐、米}三种商品。该表格表明共有四名顾客,每位顾客购买了不同种类的商品。

image.png

步骤:

对数据进行初始扫描,以获取频繁1项集。通过查看后续的扫描结果,你可以理解频繁一项集的含义。这一步骤是将所有商品逐一取出,去除重复项。

image.png

那么后面的数字表示什么意思呢?

数字代表支持度(support),具体计算方式是什么?以糖为例,计算其支持度的方法是统计4个人中有多少人购买了糖,结果分别为10和30,因此糖的支持度为2。为何米的颜色发生了变化?这是因为系统中设置了最低支持度,具体来说,在这个例子中,我们将其设定为2,这意味着所有支持度低于2的项目都会被移除。

  • 去掉支持度不符合的1项集之后
image.png

然后执行join和prune处理。join处理较为直观,即为将它们一一组合,从而生成候选的2项集。如后。这里不涉及prune处理,我们暂不深入讨论。

image.png
  • 继续求它们的支持度.如下.
image.png
  • 去掉支持度不符合的,如下,
image.png
  • 继续进行join和prune操作,
image.png

join操作我们已经了解了,这里涉及了prune操作,我们看一下.

通过观察两个图表,发现候选2项集{糖,尿布}被识别出来,但其支持度不符合条件而被移除。prune的作用是将之前不满足支持度的项集作为基础,添加其他items(形成超集),但这些超集仍不满足支持度要求。这样,在糖和尿布的基础上加入啤酒后,仍然不满足条件,这体现了剪枝的作用。

  • 最后的结果
image.png

总结一下步骤:

  1. 对数据集进行遍历,以获取频繁的1-项集。
  2. 基于频繁的K-项集,生成候选的(K+1)-项集。
  3. 对数据集进行第二次遍历,检验候选的(K+1)-项集是否为频繁项集,从而确定新的频繁(K+1)-项集。
  4. 反复执行步骤2和3,直至没有新的候选项集或无法生成新的频繁项集。
  5. 从所有频繁项集中,提取具有强关联性的规则。

下面我们来看一下第5步是怎么做的,这里说的强的关联规则.

什么是关联规则?其实就是一个形如A->B的式子.

强的定义是什么?这通常是主观设定的标准。例如,我认为当置信度超过70%时,就认定为强。接下来讨论置信度的问题。

看一下上面例子生成的频繁3项集

image.png

步骤:

对于每一个频繁项集l,我们生成其所有的非空子项集。具体来说,当l被定义为{啤酒,可乐, 尿布}时,其所有非空子项集包括单个项集{啤酒}{可乐}{尿布},以及组合项集{啤酒,可乐}{啤酒,尿布}{可乐, 尿布}。为了计算每一个非空子项集s与其补集l-s之间的关联规则置信度,我们采用下面的公式进行计算:

confidence(s->(l-s)) = \frac{support(l)}{support(s)}

  • 计算置信度
image.png

如果我们将最小置信度设置为70%,那么红框内的关联规则就被归类为强关联规则。

总结一下步骤:

  1. 对于每一个频繁项集l,生成其所有非空子项集。
  2. 对于l中的每一个非空子项集s,如果满足以下公式。

则该规则s->(l-s)被定义为具有强关联性的规则,其置信度计算公式为confidence(s->(l-s)) = \frac{support(l)}{support(s)} >= min\_conf

全部评论 (0)

还没有任何评论哟~