数据挖掘算法:关联分析二(Apriori)

二.Apriori算法

  

  上文说到,大多数关联规则挖掘算法通常采用的策略是分解为两步:

  频繁项集产生,其目标是发现满足具有最小支持度阈值的所有项集,称为频繁项集(frequent itemset)。

  规则产生,其目标是从上一步得到的频繁项集中提取高置信度的规则,称为强规则(strong rule)。通常频繁项集的产生所需的计算远大于规则产生的计算花销。

  我们发现频繁项集的一个原始方法是确定格结构中每个候选项集的支持度。但是工作量比较大。另外有几种方法可以降低产生频繁项集的计算复杂度。

  1. 减少候选项集的数目。如先验(apriori)原理,是一种不用计算支持度而删除某些候选项集的方法。
  2. 减少比较次数。利用更高级得到数据结构或者存储候选项集或者压缩数据集来减少比较次数。

1.算法分析

  Apriori算法是第一个关联规则的挖掘算法,它开创性的使用了基于支持度的剪枝技术来控制候选项集的指数级增长。Apriori算法产生频繁项集的过程有两步:第一,逐层找出当前候选项集中的所有频繁项集:第二,用当前长度的频繁项集产生长度加1的新的候选项集。

  首先我们来看一下Apriori算法用到的核心原理用到的两个重要性质:

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

  如果一个项集是非频繁的,那么它的所有超集都是非平凡的。这种基于支持度度量修剪指数搜索空间的策略称为基于支持度的剪枝,依赖于一个性质,即一个项集的支持度决不会超过它的自己的支持度,这个性质称为反之尺度度量的反单调性(anti-monotone)。

  如果一个项集是非频繁项集,那么这个项集的超集就不需要再考虑了。因为如果这个项集是非频繁的,那么它的所有超集也一定都是非频繁的。在项集的超集是指,包含这个项集的元素且元素个数更多的项集。在购物篮事务库中{Milk,Beer}就是{Milk}的其中一个超集。这个原理很好理解,如果{Milk}出现了3次,{Milk,Beer}一起出现的次数一定小于3次。所以如果一个项集的支持度小于最小支持度这个阈值了,那么它的超集的支持度一定也小于这个阈值,就不用再考虑了。

  下面简单描述购物蓝事物库例子中,所有频繁项集是如何通过Apriori算法找出的。

  首先,我们限定最小支持度计数为3。遍历长度为1的项集,发现{Coke}和{Eggs}不满足最小支持度计数,将它们除去。用剩余4个长度为1的频繁项集产生=6个长度为2的候选集。再次基础上重新计算支持度计数,发现{Bread, Milk}和{Milk, Beer}这两个项集是非频繁,将它们除去之后再产生长度为3的候选集。这里需要注意的是不需要再产生{Milk, Beer, Diaper}这个候选集了,因为它的其中一个子集{Milk, Beer}是非频繁的,根据先验原理这个项集本身一定是非频繁的。

2.优缺点评价:

  Apriori算法的优点是可以产生相对较小的候选集,而它的缺点是要重复扫描数据库,且扫描的次数由最大频繁项目集中项目数决定,因此Apriori适用于最大频繁项目集相对较小的数据集中。

  用hash树结构提高Apriori算法产生候选集的效率:

  在上述的Apriori算法中我们已经知道了这个算法需要不断的进行从频繁项集中产生候选集的过程。首先找到中包含的事务的所有元素,然后在产生长度的候选集。这个过程效率是很低的,为了提高找出所有候选集的效率就要用到哈希树了。

  

时间: 2024-10-13 01:03:49

数据挖掘算法:关联分析二(Apriori)的相关文章

【数据挖掘】关联分析之Apriori

1.Apriori算法 如果一个事务中有X,则该事务中则很有可能有Y,写成关联规则 {X}→{Y} 将这种找出项目之间联系的方法叫做关联分析.关联分析中最有名的问题是购物蓝问题,在超市购物时,有一个奇特的现象--顾客在买完尿布之后通常会买啤酒,即{尿布}→{啤酒}.原来,妻子嘱咐丈夫回家的时候记得给孩子买尿布,丈夫买完尿布后通常会买自己喜欢的啤酒. 考虑到规则的合理性,引入了两个度量:支持度(support).置信度(confidence),定义如下 支持度保证项集(X, Y)在数据集出现的频繁

Apriori算法关联分析与pyhon实现

算法中核心性质:频繁项集的所有非空子集也必须是频繁的.逆反命题 也成立:如果一个项集是非频繁的,那么所有它的超集也是非频繁. 一.Apriori算法简介:  Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集. Apriori(先验的,推测的)算法应用广泛,可用于消费市场价格分析,猜测顾客的消费习惯:网络安全领域中的入侵检测技术:可用在用于高校管理中,根据挖掘规则可以有效地辅助学校管理部门有针对性的开展贫困助学工作:也可用在移

机器学习day16 机器学习实战Apriori算法进行关联分析

上一章学习了非监督学习的聚类,聚类算法可以将不同性质的分类分开.这两天学习了apriori算法进行关联分析,感觉是目前最难理解的一章了,并且书中还有个很坑爹的错误,作者存在很大的疏忽. Apriori算法关联分析:从大规模数据集中寻找物品间的隐含关系被称作关联分析或者关联规则学习. 关联分析应用1:我们以前学习的是根据特性进行分类或者回归预测,并没有挖掘特性之间的关系,关联分析可以用于分析数据集中特性之间的关系,可以得到哪些特性频繁的共同出现或者特性之间的关系(比如出现特性A就会很大几率出现特性

Python --深入浅出Apriori关联分析算法(二) Apriori关联规则实战

上一篇我们讲了关联分析的几个概念,支持度,置信度,提升度.以及如何利用Apriori算法高效地根据物品的支持度找出所有物品的频繁项集. Python --深入浅出Apriori关联分析算法(一) 这次呢,我们会在上次的基础上,讲讲如何分析物品的关联规则得出关联结果,以及给出用apyori这个库运行得出关联结果的代码. 一. 基础知识 上次我们介绍了几个关联分析的概念,支持度,置信度,提升度.这次我们重点回顾一下置信度和提升度: 置信度(Confidence):置信度是指如果购买物品A,有较大可能

数据挖掘-关联分析 Apriori算法和FP-growth 算法

?1.关联分析概念 关联分析是从大量数据中发现项集之间有趣的关联和相关联系. ? ?定义:1.事务:每一条交易称为一个事务,如上图包含5个事务.2.项:交易的每一个物品称为一个项,例如豆奶,啤酒等. 3.项集:包含零个或多个项的集合叫做项集,例如{尿布,啤酒}.4.k?项集:包含k个项的项集叫做k-项集,例如 {豆奶,橙汁}叫做2-项集.5.支持度计数:一个项集出现在几个事务当中,它的支持度计数就是几.例如{尿布, 啤酒}出现在事务002.003和005中,所以           它的支持度计

使用Apriori算法和FP-growth算法进行关联分析(Python版)

===================================================================== <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记也包含一些其他python实现的机器学习算法 算法实现均采用python github 源码同步:https://github.com/Thinkgamer/Machine-Learning-With-Python ==================================

使用Apriori进行关联分析(二)

书接上文(使用Apriori进行关联分析(一)),介绍如何挖掘关联规则. 发现关联规则 我们的目标是通过频繁项集挖掘到隐藏的关联规则,换句话说就是关联规则. 所谓关联规则,指通过某个元素集推导出另一个元素集.比如有一个频繁项集{底板,胶皮,胶水},那么一个可能的关联规则是{底板,胶皮}→{胶水},即如果客户购买了底板和胶皮,则该客户有较大概率购买胶水.这个频繁项集可以推导出6个关联规则: {底板,胶水}→{胶皮}, {底板,胶皮}→{胶水}, {胶皮,胶水}→{底板}, {底板}→{胶水, 胶皮

第十四篇:Apriori 关联分析算法原理分析与代码实现

前言 想必大家都听过数据挖掘领域那个经典的故事 - "啤酒与尿布" 的故事. 那么,具体是怎么从海量销售信息中挖掘出啤酒和尿布之间的关系呢? 这就是关联分析所要完成的任务了. 本文将讲解关联分析领域中最为经典的Apriori算法,并给出具体的代码实现. 关联分析领域的一些概念 1. 频繁项集: 数据集中经常出现在一起的物品的集合.例如 "啤酒和尿布" 2. 关联规则: 指两个物品集之间可能存在很强的关系.例如 "{啤酒} -> {尿布}"

Apriori 关联分析算法原理分析与代码实现

前言 想必大家都听过数据挖掘领域那个经典的故事 - "啤酒与尿布" 的故事. 那么,具体是怎么从海量销售信息中挖掘出啤酒和尿布之间的关系呢? 这就是关联分析所要完成的任务了. 本文将讲解关联分析领域中最为经典的Apriori算法,并给出具体的代码实现. 关联分析领域的一些概念 1. 频繁项集: 数据集中经常出现在一起的物品的集合.例如 "啤酒和尿布" 2. 关联规则: 指两个物品集之间可能存在很强的关系.例如 "{啤酒} -> {尿布}"