手推Apriori算法------挖掘频繁项集
版权声明:本文为博主原创文章,未经博主允许不得转载。
Apriori算法:
使用一种称为逐层搜索的迭代方法,其中K项集用于搜索(K+1)项集。
首先,通过扫描数据库,统计每个项的计数,并收集满足最小支持度的项,找出频繁1项集的集合。该集合记为L1。然后,使用L1找出频繁2项集的集合L2,使用L2找出L3,如此下去,直到不能再找到频繁K项集。找出每个Lk需要一次数据库的完整扫描。
为了提高频繁项集逐层产生的效率,一种称为先验性质的重要性质用于压缩搜索空间。
先验性质:频繁项集的所有非空子集也一定是频繁的。
频繁1项集的集合------> L1:统计各个项的出现次数,将满足最小支持度(会给出)的项留下。
频繁2项集的集合------> L2:连接L1中各个项:例如:L1: 1,2,3,4 ------>L2:(1,2),(1,3),(1,4),(2,3),(2,4),(3,4) 。连接完成之后,需要剪枝(根据先验性质),由于L2中的每个项的子集都是频繁的,所以剪枝这步不需要删除L2中不满足的项。最后,扫描数据库(就是给出的数据),统计L2中所有项的支持计数(就是累加每个项在给出数据中出现的次数),挑出满足最小支持度的项构成L2。(一般这里会删除一些项,假设删除了(2,4)项)。 最终 L2:(1,2),(1,3),(1,4),(2,3),(3,4)
频繁3项集的集合------> L3:连接L2中的各个项: 例如:L2: (1,2),(1,3),(1,4),(2,3),(2,4),(3,4) ------->L3:(1,2,3),(1,2,4),(1,3,4),(2,3,4)。连接完成之后,需要剪枝,根据先验性质,频繁项集的所有子集必须是频繁的。所以删除(1,2,4)和(2,3,4)因为它们的子集(2,4)不在L2中所以不是频繁项集。最后,扫描数据库(就是给出的数据),统计L3中所有项的支持计数(就是累加每个项在给出数据中出现的次数),挑出满足最小支持度的项构成L3。最终L3:(1,2,3),(1,3,4)
频繁4项集的集合------> L4:正常迭代进行。
但就上面举的例子:因为连接L3中各项:L3:(1,2,3),(1,3,4)-------------->L4:(1,2,3,4) 。L4的子集(2,3,4)不是频繁项集,这样L4会为空集,所以算法迭代结束。找出的频繁项集为:(1,2,3),(1,3,4)
核心流程:集合连接-------->剪枝--------->挑选满足最小支持度的项---------->构成频繁项集
手推Apriori算法------挖掘频繁项集的更多相关文章
- 手推FP-growth (频繁模式增长)算法------挖掘频繁项集
一.频繁项集挖掘为什么会出现FP-growth呢? 原因:这得从Apriori算法的原理说起,Apriori会产生大量候选项集(就是连接后产生的),在剪枝时,需要扫描整个数据库(就是给出的数据),通过 ...
- R_Studio(时序)Apriori算法寻找频繁项集的方法
应用ARIMA(1,1,0)对2015年1月1日到2015年2月6日某餐厅的销售数量做为期5天的预测 setwd('D:\\dat') #install.packages("forecast ...
- FP-growth算法发现频繁项集(一)——构建FP树
常见的挖掘频繁项集算法有两类,一类是Apriori算法,另一类是FP-growth.Apriori通过不断的构造候选集.筛选候选集挖掘出频繁项集,需要多次扫描原始数据,当原始数据较大时,磁盘I/O次数 ...
- FP-Growth算法之频繁项集的挖掘(python)
前言: 关于 FP-Growth 算法介绍请见:FP-Growth算法的介绍. 本文主要介绍从 FP-tree 中提取频繁项集的算法.关于伪代码请查看上面的文章. FP-tree 的构造请见:FP-G ...
- 挖掘频繁项集之FP-Growth算法
http://blog.csdn.net/pipisorry/article/details/48918007 FP-Growth频繁项集挖掘算法(Frequent-Pattern Growth, 频 ...
- FP-growth算法发现频繁项集(二)——发现频繁项集
上篇介绍了如何构建FP树,FP树的每条路径都满足最小支持度,我们需要做的是在一条路径上寻找到更多的关联关系. 抽取条件模式基 首先从FP树头指针表中的单个频繁元素项开始.对于每一个元素项,获得其对应的 ...
- 关联规则—频繁项集Apriori算法
频繁模式和对应的关联或相关规则在一定程度上刻画了属性条件与类标号之间的有趣联系,因此将关联规则挖掘用于分类也会产生比较好的效果.关联规则就是在给定训练项集上频繁出现的项集与项集之间的一种紧密的联系.其 ...
- 【机器学习实战】第12章 使用FP-growth算法来高效发现频繁项集
第12章 使用FP-growth算法来高效发现频繁项集 前言 在 第11章 时我们已经介绍了用 Apriori 算法发现 频繁项集 与 关联规则.本章将继续关注发现 频繁项集 这一任务,并使用 FP- ...
- 【机器学习实战】第12章 使用 FP-growth 算法来高效发现频繁项集
第12章 使用FP-growth算法来高效发现频繁项集 前言 在 第11章 时我们已经介绍了用 Apriori 算法发现 频繁项集 与 关联规则.本章将继续关注发现 频繁项集 这一任务,并使用 FP- ...
随机推荐
- popup介绍
一.作用 用于使浏览器自动生成弹窗 二.示例 1.新建Django项目,新建APP:app01, 项目根目录下新建文件夹static 2.静态文件配置,在settings.py中配置static: 3 ...
- bootloader的移植
jz2440开发板 在介绍bootloader里边的内容的时候,需要知道的是: bootloader的引入的目的就是启动linux内核,一个简单的bootloader编写需要以下的步骤: ①初始化硬件 ...
- 图解使用IDEA创建第一个Java程序HelloWorld
前几次给大家分享了怎么在自己的电脑上配置 java 环境,准备工作做好了,我们就要开始我们真正的编码学习了.下面介绍使用 IDEA 创建我们的第一个 HelloWorld 程序. 1.打开 IDEA, ...
- window.onload 函数不执行处理
Google Chrome window.onload = function(){} 函数不执行处理 function pageOnLoad(){} window.onload = pageOnL ...
- 关于OPENSSL的EVP函数的使用
4月份没什么做,就是做了OPENSSL的 加密和解密的应用,现在公开一下如何调用OPENSSL对字符串进行加密和解密,当中也学会了对加密数据进行BASE64编码,现在公开一下代码,在这感谢GITHUB ...
- 寒假训练3解题报告 CodeForces #148
CodeForces 148B 一道简单模拟,判断龙能够抓到公主几次,如果公主和龙同时到达公主的城堡,不算龙抓住她,因为路程除以速度可能会产生浮点数,所以这里考虑一下精度问题 #include < ...
- android开发里跳过的坑-android studio 错误 Could not find junit:junit:4.12
在导入一个新项目时,出现错误Could not find junit:junit:4.12,网上大多是说缺少junit的jar包,但我查看了安装目录下是有jnuit包的,并且新建的项目都没有问题.几经 ...
- 【BZOJ3110】K大数查询(权值线段树套线段树+标记永久化,整体二分)
题意:有N个位置,M个操作.操作有两种,每次操作 如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是 ...
- POJ 3415 (后缀自动机)
POJ 3415 Common Substrings Problem : 给两个串S.T (len <= 10^5), 询问两个串有多少个长度大于等于k的子串(位置不同也算). Solution ...
- python: filter, map, reduce, lambda
filter built-in function filter(f,sequence) filter can apply the function f to each element of seque ...