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

上文说到,大多数关联规则挖掘算法通常采用的策略是分解为两步:
频繁项集产生,其目标是发现满足具有最小支持度阈值的所有项集,称为频繁项集(frequent itemset)。
规则产生,其目标是从上一步得到的频繁项集中提取高置信度的规则,称为强规则(strong rule)。通常频繁项集的产生所需的计算远大于规则产生的计算花销。
我们发现频繁项集的一个原始方法是确定格结构中每个候选项集的支持度。但是工作量比较大。另外有几种方法可以降低产生频繁项集的计算复杂度。
- 减少候选项集的数目。如先验(apriori)原理,是一种不用计算支持度而删除某些候选项集的方法。
- 减少比较次数。利用更高级得到数据结构或者存储候选项集或者压缩数据集来减少比较次数。
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算法中我们已经知道了这个算法需要不断的进行从频繁项集中产生候选集的过程。首先找到中包含的事务的所有元素,然后在产生长度的候选集。这个过程效率是很低的,为了提高找出所有候选集的效率就要用到哈希树了。
数据挖掘算法:关联分析二(Apriori)的更多相关文章
- 【数据挖掘】关联分析之Apriori(转载)
[数据挖掘]关联分析之Apriori 1.Apriori算法 如果一个事务中有X,则该事务中则很有可能有Y,写成关联规则 {X}→{Y} 将这种找出项目之间联系的方法叫做关联分析.关联分析中最有名的问 ...
- 数据挖掘算法(四)Apriori算法
参考文献: 关联分析之Apriori算法
- 数据挖掘算法:关联分析二(FP-tree算法)
三.FP-tree算法 下面介绍一种使用了与Apriori完全不同的方法来发现频繁项集的算法FP-tree.FP-tree算法在过程中没有像Apriori一样产生候选集,而是采用了更为紧凑的数据结构组 ...
- Python --深入浅出Apriori关联分析算法(二) Apriori关联规则实战
上一篇我们讲了关联分析的几个概念,支持度,置信度,提升度.以及如何利用Apriori算法高效地根据物品的支持度找出所有物品的频繁项集. Python --深入浅出Apriori关联分析算法(一) 这次 ...
- 数据挖掘-关联分析 Apriori算法和FP-growth 算法
•1.关联分析概念 关联分析是从大量数据中发现项集之间有趣的关联和相关联系. •定义:1.事务:每一条交易称为一个事务,如上图包含5个事务.2.项:交易的每一个物品称为一个项,例如豆奶,啤酒等. ...
- Apriori 关联分析算法原理分析与代码实现
前言 想必大家都听过数据挖掘领域那个经典的故事 - "啤酒与尿布" 的故事. 那么,具体是怎么从海量销售信息中挖掘出啤酒和尿布之间的关系呢? 这就是关联分析所要完成的任务了. 本文 ...
- 机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析
机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析 关键字:Apriori.关联规则挖掘.频繁项集作者:米仓山下时间:2018 ...
- 使用Apriori进行关联分析(二)
书接上文(使用Apriori进行关联分析(一)),介绍如何挖掘关联规则. 发现关联规则 我们的目标是通过频繁项集挖掘到隐藏的关联规则. 所谓关联规则,指通过某个元素集推导出另一个元素集.比如有一个频繁 ...
- 第十四篇:Apriori 关联分析算法原理分析与代码实现
前言 想必大家都听过数据挖掘领域那个经典的故事 - "啤酒与尿布" 的故事. 那么,具体是怎么从海量销售信息中挖掘出啤酒和尿布之间的关系呢? 这就是关联分析所要完成的任务了. 本文 ...
随机推荐
- 【js学习笔记】去除省、市、区、特别行政区、自治区
不是很懂js,以前去除这些省.市.区的时候都是用的分支判断indexOf,如果!=-1则replace一次,今天看同事的代码,发现还有更简单的办法... var areaName = str.repl ...
- Redis实战(二)CentOS 7上Redis两种方式持久化
Redis的持久化之RDB RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并且存储到硬盘上. 进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个 ...
- [转载]jsonp详解
http://www.cnblogs.com/lemontea/archive/2012/12/11/2812268.html json相信大家都用的多,jsonp我就一直没有机会用到,但也经常看到, ...
- iframe测试
iframe类似于frameset,iframe 和 frameset 都用于html页面的框架布局.(都可用于后台管理界面,iframe放于body标签内,frameset不能放在body标签) 1 ...
- jQuery.Validate 验证,以及 remote验证, 多参数传递
jQuery.Validate 验证: http://www.runoob.com/jquery/jquery-plugin-validate.html 教程网址,很简单, 今天主要在这里记录一下re ...
- 【bzoj题解】1001 狼抓兔子
题目描述 现在小朋友们最喜欢"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- Pytorch数据变换(Transform)
实例化数据库的时候,有一个可选的参数可以对数据进行转换,满足大多神经网络的要求输入固定尺寸的图片,因此要对原图进行Rescale或者Crop操作,然后返回的数据需要转换成Tensor如: import ...
- Gradle教程链接
Gradle教程:https://www.yiibai.com/gradle/ https://www.cnblogs.com/wxishang1991/p/5532006.html
- mac 升级10.12 php debug 环境 跑不起的解决 解决方案
1: mac 升级后发现 php从原来的5.5 升级为 5.6 了... 所以以前 php.ini 里面的配置全部都没有了. mac 给我们做了备份2: 没办法只能升级php对应的插件到5. ...
- SQL-如果指定值存在返回1,如果不存在返回0的SQL语句
想实现简单的判断一个表中是否有一条记录,可以用这个方式.如以下,table_name是表名,column1是列名. 这条语句会在此条记录存在的时候返回1,不存在时返回0. FROM table_nam ...