发现频繁项集的方法 Apriori算法

我们是通过算法来找到数据之间的关联规则(两个物品之间可能存在很强的相关关系)和频繁项集(经常出现在一起的物品的集合)。

我们是通过支持度和置信度来定义关联规则和频繁项集的

一个项集支持度是指在所有数据集中出现这个项集的概率,项集可能只包含一个选项,也有可能是多个选项的组合。

置信度 针对于啤酒——>尿布这样的关联规则来定义,计算方式为支持度(啤酒,尿布)/支持度啤酒,其中支持度(啤酒、尿布)为3/5,支持度啤酒为4/5,所以他的置信度为3/4,即置信度为75%,这意味着在啤酒的规则中,有0.75的规则都适用。

但是在这样的规则中,如果需要求出所有规则,那么计算量比较大,这就可以用到 Apriori算法

Apriori 的原理:如果某个项集是频繁项集,那么它所有的非空子集也是频繁的(先验原理)。即如果 {0,1} 是频繁的,那么 {0}, {1} 也一定是频繁的。反过来能发现如果一个项集是非频繁的,那么它的所有超集也是非频繁的。这样就不用计算他的支持度了,可以减少计算量。

计算步骤为:

  先会生成所有单个物品的项集列表, 扫描交易记录来查看哪些项集满足最小支持度要求(一般会给一个最小支持度),那些不满足最小支持度的集合会被去掉,对剩下的集合进行组合以生成包含两个元素的项集,接下来重新扫描交易记录,去掉不满足最小支持度的项集,重复进行直到所有项集都被去掉。

提高Apriori算法的效率

1、基于散列的技术

当扫描数据库中的每个事务时,由C1中的候选频繁项集1项集产生频繁项集1项集L1时,可以对每个事务产生所有的2项集,将他们散列(映射)到散列表中的不同桶中,并增加对应的桶计数。在散列表中,对应桶计数低于支持度阈值的2项集不可能是频繁的,可以删除掉。

2、事物压缩

不包含任何频繁项集的K项集的事务不可能包含任何频繁(K+1)项集。这种事务在之后的考虑时,可以被标记或者删除,因为产生的j项集(j>K) 的数据库扫描不再需要他们。

3、划分

包含两个阶段,第一阶段,算法把D中的事务分成n个非重叠的分区,如果D中事务的最小相对支持度阈值为p,则每个分区的最小支持度为p乘该分区中的事务数。对每个分区,找到所有的局部频繁项集。  阶段二是,再次扫描D,评估每个候选的实际支持度,以确定全局频繁项集。

4、抽样

选取给你定数据库D中的随机样本S,然后在S而不再D中搜索频繁项集。

5、动态项集技术

原文地址:https://www.cnblogs.com/RR-99/p/10424953.html

时间: 2024-10-10 13:22:07

发现频繁项集的方法 Apriori算法的相关文章

FP - growth 发现频繁项集

FP - growth是一种比Apriori更高效的发现频繁项集的方法.FP是frequent pattern的简称,即常在一块儿出现的元素项的集合的模型.通过将数据集存储在一个特定的FP树上,然后发现频繁项集或者频繁项对.通常,FP-growth算法的性能比Apriori好两个数量级以上. FP树与一般的树结构类似,但它通过链接(Link)来连接相似元素,被连起来的元素项可以看成一个链表. 上图是一棵FP树,一个元素项可以在一棵FP树种出现多次,FP树的节点会存储项集的出现频率,每个项集会以路

FP-growth算法(一)——通过构建FP树发现频繁项集

常见的挖掘频繁项集算法有两类,一类是Apriori算法,另一类是FP-growth.Apriori通过不断的构造候选集.筛选候选集挖掘出频繁项集,需要多次扫描原始数据,当原始数据较大时,磁盘I/O次数太多,效率比较低下.FPGrowth不同于Apriori的"试探"策略,算法只需扫描原始数据两遍,通过FP-tree数据结构对原始数据进行压缩,效率较高. FP代表频繁模式(Frequent Pattern) ,算法主要分为两个步骤:FP-tree构建.挖掘频繁项集. FP树表示法 FP树

FP-growth算法发现频繁项集(二)——发现频繁项集

上篇介绍了如何构建FP树,FP树的每条路径都满足最小支持度,我们需要做的是在一条路径上寻找到更多的关联关系. 抽取条件模式基 首先从FP树头指针表中的单个频繁元素项开始.对于每一个元素项,获得其对应的条件模式基(conditional pattern base),单个元素项的条件模式基也就是元素项的关键字.条件模式基是以所查找元素项为结尾的路径集合.每一条路径其实都是一条前辍路径(perfix path).简而言之,一条前缀路径是介于所査找元素项与树根节点之间的所有内容. 下图是以{s:2}或{

R_Studio(时序)Apriori算法寻找频繁项集的方法

应用ARIMA(1,1,0)对2015年1月1日到2015年2月6日某餐厅的销售数量做为期5天的预测 setwd('D:\\dat') #install.packages("forecast") #install.packages("plyr") #install.packages("fUnitRoots") #install.packages("tibble") library(forecast) library(fUnit

Spark下的FP-Growth和Apriori(频繁项集挖掘并行化算法)

频繁项集挖掘是一个关联式规则挖掘问题.关联挖掘是数据挖掘中研究最早也是最活跃的领域,其中频繁模式的挖掘是关联挖掘的核心和基础,是产生关联规则挖掘的基础.频繁项集最经典的应用就是超市的购物篮分析. 首先要理解频繁项集中的以下概念. 频繁项:在多个集合中,频繁出现的元素项. 频繁项集:在一系列集合中每项都含有某些相同的元素,这些元素形成一个子集,满足一定阀值就是频繁项集. K项集:K个频繁项组成的一个集合. 支持度:包含频繁项集(F)的集合的数目. 可信度:频繁项与某项的并集的支持度与频繁项集支持度

使用 FP-growth 算法高效挖掘海量数据中的频繁项集

前言 对于如何发现一个数据集中的频繁项集,前文讲解的经典 Apriori 算法能够做到. 然而,对于每个潜在的频繁项,它都要检索一遍数据集,这是比较低效的.在实际的大数据应用中,这么做就更不好了. 本文将介绍一种专门检索频繁项集的新算法 - FP-growth 算法. 它只会扫描数据集两次,能循序挖掘出频繁项集.因此这种算法在网页信息处理中占据着非常重要的地位. FP-growth 算法基本原理 将数据存储到一种成为 FP 树的数据结构中,这样的一棵树包含了数据集中满足最小支持度阈值的所有节点信

[ML&DL] 频繁项集Apriori算法

频繁项集Apriori算法 Reference 数据挖掘十大算法之Apriori详解 Apriori算法详解之[一.相关概念和核心步骤] 关联分析之Apriori算法 haha 算法理解部分主要是前两个链接,写的很靠谱.在实际中再配合上hadoop的mapreduce.

FP-growth高效频繁项集发现

FP-growth 算法优缺点: 优点:一般快于Apriori 缺点:实现比较困难,在某些数据上性能下降 适用数据类型:标称型数据 算法思想: FP-growth算法是用来解决频繁项集发现问题的,这个问题再前面我们可以通过Apriori算法来解决,但是虽然利用Apriori原理加快了速度,仍旧是效率比较低的.FP-growth算法则可以解决这个问题.FP-growth算法使用了频繁模式树(Frequent Pattern Tree)的数据结构.FP-tree是一种特殊的前缀树,由频繁项头表和项前

关联分析中寻找频繁项集的FP-growth方法

关联分析是数据挖掘中常用的分析方法.一个常见的需求比如说寻找出经常一起出现的项目集合. 引入一个定义,项集的支持度(support),是指所有包含这个项集的集合在所有数据集中出现的比例. 规定一个最小支持度,那么不小于这个最小支持度的项集称为频繁项集(frequent item set). 如何找到数据集中所有的频繁项集呢? 最简单的方法是对所有项集进行统计,可以通过逐渐增大项集大小的方式来遍历所有项集.比如说下面的数据集,先统计所有单个元素集合的支持度,{z} 的支持度为5 (这里把项目出现次