基于海量数据的关联规则挖掘(五)
2.1基于hash的方法
首先是基于哈希的算法。基于哈希的算法仍是将所有所有数据放入内存的方法。只要在计算的过程中能够满足算法对内存的大量需求,Apriori算法能够很好的执行。但在计算候选项集时特别是在计算候选项对C2时需要消耗大量内存。针对C2候选项对过大,一些算法提出用来减少C2的大小。这里我们首先考虑PCY算法,这个算法使用了在Apriori算法的第一步里大量没使用的内存。接着,我们考虑Multistage算法,这个算法使用PCY的技巧,但插入了额外的步骤来更多的减少C2的大小。
Park,Chen,Yu(PCY)算法[3]:
这个算法我们叫PCY算法,取自它的作者名字缩写。该算法关注在频繁项集挖掘中的第一步有许多内存空间没被利用的情况。如果有数以亿计的项,和以G计的内存,在使用关联规则的第一步里我们将会仅仅使用不到10%的内存空间,会有很多内存空闲。因为在第一步里,我们只需要两个表,一个用来保存项的名字到一个整数的映射,用这些整数值代表项,一个数组来计数这些整数,如图1。PCY算法使用这些空闲的内存来保存一个整数数组。其思想显示如图2。.将这个数组看做一个哈希表,表的桶中装的是整数值而不是一组key值。项对被哈希到这些桶中。在第一步扫描篮子的处理中,我们不但将这些项对加一,并且通过两步循环,我们创造出所有的项对。我们将项对哈希到哈希表中,并且将哈希到的位置加一。注意,项本身不会进入桶,项对的加入只是影响桶中的整数值。
在第一步的结尾,每个桶中装有一个数字,这个数字表达了桶中的项对的数目。如果桶中数字大于支持度阈值s,这个桶被称为频繁桶。对于频繁桶,我们不能确定其项对是否为频繁项对,但有可能是。但是,对于阈值低于s的桶,我们知道其中的项对肯定不是频繁项对,即使项对是由两个频繁项组成。这个事实给我们在第二部处理带来很大的方便。我们可以定义候选集C2为这样的项对{i, j}:
1. i和j是频繁项
2. {i,j}哈希到一个频繁桶
第二个条件是PCY算法与A-Priori算法的区别所在。
在步骤1中使用hash表可能并不能带来好处,这取决于数据大小和空闲内存大小。在最坏的情形下,所有的桶都是频繁的,PCY计算的项对与A-priori是一样的。然而,在通常的情况下,大多数的桶都是非频繁的。这种情况下,PCY算法降低了第二步内存的使用。
假设我们有1G的内存可用来在第一步做hash表存放,并假设数据文件包含在10亿篮子,每个篮子10个项。一个桶为一个整数,通常定义为4个字节,于是我们可以保存2.5亿个桶。所有篮子的项对的数量总数为或个。这个数量也是桶中计数的总和。这样,每个桶的平均计数为,或180个。所以,如果支持度阈值s在180附近,或更小,可能只有很少的桶是非频繁的。然而,当s足够大,比方说1000,这样会使大部分的桶成为非频繁的。这样最大可能的频繁桶数为,或450亿个频繁桶。
在PCY算法中,在其第二步操作前,哈希表被压缩为bitmap,在这里,每一个bit用作一个桶。若桶为频繁桶,则位置1,否则置0。这样32bit的整数被压缩为只有1bit。然后再PCY的第二步操作中,bitmap只占了原来所用空间的1/32,如图2所示。如果大部分的桶都是非频繁桶,我们可以预料,在第二步的项对计数后产生的频繁项集会更小。这样,PCY算法就能直接在内存中处理这些数据集而不会耗尽内存。
虽然在寻找频繁项对时,PCY算法与Apriori算法相差很大,但是,在三元对和更多元时,他们的方法又为相同了。
图2、使用PCY算法的内存组织形式,左图为步骤1的内存使用情况,右图为步骤2的内存使用情况
基于海量数据的关联规则挖掘(五)相关推荐
- 关联规则挖掘算法研究
文章目录 一. 问题背景与意义: 二. 问题定义 三. 经典的关联规则挖掘算法 3.1 层次算法 3.1.1 Apriori算法描述 3.1.2 FP-Growth算法 3.2 图挖掘算法 3.3 并 ...
- 数据挖掘关联规则挖掘FPtree的思想
FPtree是针对Apriori关联规则挖掘算法的改进,他的优点在于只需要扫描一遍数据库,建好了FPtree之后,基于树做关联规则挖掘就可以了,显然大大减少了数据库的扫描次数. 建FPtree前的工作 ...
- 数据挖掘系列(5)使用mahout做海量数据关联规则挖掘
上一篇介绍了用开源数据挖掘软件weka做关联规则挖掘,weka方便实用,但不能处理大数据集,因为内存放不下,给它再多的时间也是无用,因此需要进行分布式计算,mahout是一个基于hadoop的分布式数 ...
- 关联规则挖掘_基于人工智能的网络告警关联分析处理的应用
1 概述 随着通信网络近些年的快速发展,其规模已经相当庞大,在网络中每天都会产生告警信息,并且这些信息数据量庞大.突发故障多,当网络设备出现故障并引发告警时,与它关联的设备也会引发相应的故障,并在短时 ...
- 利用weka进行数据挖掘——基于Apriori算法的关联规则挖掘实例
文章目录 1. weka安装 2. 先分析一个Apriori算法的关联规则挖掘实例 3. 利用weka进行数据挖掘 3.1 将数据转为ARFF格式 3.2 利用weka进行分析 4. 参考文章 首先, ...
- 基于hadoop实现的关联规则挖掘的图书数据分析推荐系统
资源下载地址:https://download.csdn.net/download/sheziqiong/86763735 资源下载地址:https://download.csdn.net/downl ...
- 基于FPGrowth挖掘算法的乳腺癌中医症型关联规则挖掘
挖掘的总体思路: 首先癌症有不同的发展期 不同发展期的癌症有不同的症型 这些症型都处于不同的严重程度. 因此收集病人样本930条,最终挖掘目标是: 找出这些严重程度不同的症型和癌症发展阶段(我们知道癌 ...
- 【数据分析与挖掘】基于Apriori算法的中医证型的关联规则挖掘(有数据集和代码)
背景 中医药治疗乳腺癌有着广泛的适应证和独特的优势.从整体出发,调整机体气血.阴阳.脏腑功能的平衡,根据不同的临床证候进行辨证论治.确定"先证而治"的方向:即后续证侯尚未出现之前, ...
- 机器学习(十八)——关联规则挖掘
关联规则挖掘 基本概念(续) 定义一:设I={i1,i2,-,im}I=\{i_1,i_2,\dots,i_m\},是m个不同的项目的集合,每个iki_k称为一个项目.项目的集合I称为项集.其元素的个 ...
最新文章
- android平台自动化编译环境搭建一hudson安装
- C#windows向窗体传递泛型类
- Programming Computer Vision with Python (学习笔记四)
- 阿里巴巴的独立环境是如何实现的
- 把图片保存到数据库的实现
- ceph auth get boostrap-osd_那些某橙色软件都能GET到手的有文凭粗粮 速速前来种草
- Python数据分析四剑客:IPython、Numpy、pandas、Matplotlib
- can接收id过滤linux,linux – 很大程度上被candump(SocketCAN)ID过滤功能搞糊涂了
- eve-ng 添加dynamips镜像文件
- vsftpd配置权限问题
- 基于C++编译的车牌识别系统
- js打开新页面的几种方式
- 集合经验模态分解matlab,matlab集合经验模态分解EEMD工具包
- SAP将未审批的采购订单提交到OA去审批 程序 OA审批结果返回到SAP
- 【多媒体基础知识】 --- 什么是流媒体技术
- PHPUnit的使用
- CentOS 7 minimal安装完成之后安装图形界面
- 720°VR全景网站制作
- 关于如何跟老板谈加薪
- SQLServer之服务器连接