数据挖掘FP-Growth算法实验报告.docx_第1页
数据挖掘FP-Growth算法实验报告.docx_第2页
数据挖掘FP-Growth算法实验报告.docx_第3页
数据挖掘FP-Growth算法实验报告.docx_第4页
数据挖掘FP-Growth算法实验报告.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FP-Growth算法实验报告一、算法介绍数据挖掘是从数据库中提取隐含的、未知的和潜在的有用信息的过程,是数据库及相关领域研究中的一个极其重要而又具有广阔应用前景的新领域. 目前,对数据挖掘的研究主要集中在分类、聚类、关联规则挖掘、序列模式发现、异常和趋势发现等方面,其中关联规则挖掘在商业等领域中的成功应用使它成为数据挖掘中最重要、最活跃和最成熟的研究方向. 现有的大多数算法均是以Apriori 先验算法为基础的,产生关联规则时需要生成大量的候选项目集. 为了避免生成候选项目集,Han等提出了基于FP 树频繁增长模式(Frequent-Pattern Growth,FP-Growth)算法。FP 树的构造过程可描述为: 首先创建树的根结点, 用“null”标记. 扫描交易数据集DB ,每个事务中的项目按照支持度递减排序,并对每个事务创建一个分枝. 一般地,当为一个事务考虑增加分枝时,沿共同前缀上的每个结点的计数值增加1 ,为跟随在前缀之后的项目创建结点并链接. 为方便树的遍历,创建一个频繁项目列表,使得每个项目通过一个结点头指针指向它在树中的位置. FP 树挖掘过程可描述为:由长度为1 的频繁项目开始,构造它的条件项目基和条件FP树,并递归地在该树上进行挖掘. 项目增长通过后缀项目与条件FP 树产生的频繁项目连接实现. FP-Growth 算法将发现大频繁项目集的问题转换成递归地发现一些小频繁项目,然后连接后缀.它使用最不频繁的项目后缀,提供了好的选择性。算法:FP-Growth。使用FP树,通过模式增长挖掘频繁模式。输入:n D:事物数据库n min_sup:最小支持度阈值输出:频繁模式的完全集。方法:1. 按一下步骤构造FP树:(a)扫描数据库D一次。手机频繁项的集合F和它们的支持度计数。对F按支持度计数降序排序,结果为频繁项列表L。(b)创建FP树的根节点,以“null”标记它。对于D中每个事物Trans,执行:选择Trans中的频繁项,并按L中的次序排序。设Trans排序后的频繁项列表为p|P,其中p是第一个元素,而P是剩下的元素列表。调用insert_tree(p|P,T)。该过程执行情况如下。如果T有子女N使得N.item-name=p.item-name,则N的计数增加1;否则,创建一个新节点N,将其计数设置为1,链接到它的父节点T,并且通过节点链结构将其链接到具有相同item-name的结点。如果P非空,则递归地调用insert_tree(P,N)。2. FP树的挖掘通过调用FP-growth(FP_tree,null)实现。该过程实现如下。Procedure FP_growth(Tree,)(1)if Tree包含单个路径P then(2)for 路径P中结点的每个组合(记作)(3)产生模式,其中支持度计数support_count等于中结点的最小支持度计数;(4)else for Tree的表头中的每一个i(5)产生一个模式=i,其中支持度计数support_count=i.support_count;(6)构造的调减模式基然后构造的条件FP树Tree;(7)if Tree then(8)调用FP_growth(Tree,);二、算法实现及实验结果 本实验有两个测试集合:小数据集A:50条事物集,10个不同的项大数据集合B:5670事物集,100个不同项1.对数据集合A进行min_sup=8%计数产生的频繁项集结果如下:7表1. 频繁一项集项集支持度计数支持度1I3 3570%2I9 612%3I6 510%4I1 )1734%5I4 1428%6I71122%7I2 3468%8I8 1122%9I5 1632%表2. 频繁二项集项集支持度计数支持度1I2 I6510%2I3 I9 48%3I2 I9 48%4I1 I7 48%5I2 I7 714%6I3 I7 816%7I2 I8 612%8I3 I8 816%9I2 I4 1122%10I2 I5 1122%11I3 I5 1326%12I3 I1 1020%13I2 I1 1122%14I3 I2 2142%表3. 频繁三项集项集支持度计数支持度1I2 I5 I7510%2I3 I5 I7612%3I3 I2 I7510%4I3 I2 I8510%5I2 I5 I8510%6I3 I5 I8 612%7I2 I1 I4510%8I3 I1 I5510%9I2 I1 I5 612%10I3 I2 I5 816%11I3 I2 I148%表4. 频繁四项集项集支持度计数支持度1I3 I2 I5 I7510%2I3 I2 I5 I8510%3I3 I2 I1 I548%2对数据集B进行不同支持度实验时间消耗结果如下:图1.数据集B消耗时间三、算法的优缺点分析1. FP-Growth算法的优点:(1)一个大数据库能够被有效地压缩成比原数据库小很多的高密度结构,避免了重复扫描数据库的开销(2)该算法基于FP-Tree的挖掘采取模式增长的递归策略,创造性地提出了无候选项目集的挖掘方法,在进行长频繁项集的挖掘时效率较好。(3)挖掘过程中采取了分治策略,将这种压缩后的数据库DB分成一组条件数据库Dn,每个条件数据库关联一个频繁项,并分别挖掘每一个条件数据库。而这些条件数据库Dn要远远小于数据库DB。2. FP-Growth算法的缺点及改进方法(1)该算法采取增长模式的递归策略,虽然避免了候选项目集的产生。但在挖掘过程,如果一项大项集的数量很多,并且由原数据库得到的FP-Tree的分枝很多,而且分枝长度又很长时,该算法需要构造出数量巨大的conditional FP-Tree,不仅费时而且要占用大量的空间,挖掘效率不好,而且采用递归算法本身效率也较低。改进策略:FA算法-FP-Growth算法与Apriori算法的结合在原数据库得到的FP-Tree的基础上,采用Apriori算法的方法进行挖掘,挖掘过程中不构造conditional FP-Tree。挖掘过程仍然采用分治的策略,即将压缩后的数据库D分成一组条件数据库,每个条件数据库关联一个频繁项。假设有n个一项大项集,则数据库D可被分割成n个条件数据库Di(i=1,n),而数据库Di是关联一项大项集Ii的条件数据库。然后分别采用Apriori算法挖掘每一个条件数据库Di,得到所有以Ii为尾的大项集。实现方法是,仍然采用FP-Growth算法的方法构造一棵FP-Tree,不过在每个项前缀子树的节点中增加一个域:con-count。在对条件数据库Di进行挖掘时,该域记录了所在路径代表的交易(transaction)中达到此节点的并且包括Ii的交易个数。而为了找出所有包含Ii的大项集,首先沿着频繁项头表中项Ii的链域找到item-name为Ii的每个项前缀子树的节点Pi,再沿着每个Pi的父指针往上走直到根节点,使该路径上经过的每个项前缀子树节点的con-count域都增加Pi.count,根节点不增加。同时增加一个临时频繁项头表lTable,每个表项(entry)由三个域组成:(1)item-name;(2)node-link;(3) con-count。若某个项前缀子树节点的con-count域增加了Pi.count,另外假如lTable中没有一个表项的item-name与Pi.item-name相同,则在lTable中增加一个表项,使它的item-name,与con-count都与Pi的相同,同时node-link指向该项前缀子树节点的Pi的地址。如果lTable中存在一个表项,它的item-name与Pi.item-name相同,则只要对该表项的con-count域增加Pi. count就行了。然后再对lTable中的每一个表项的con-count域进行统计,若它的con-count域大于预先给定的最小支持度,则保留该表项,否则删除该表项1。(2)由于海量的事物集合存放在大型数据库中,经典的FP-Growth算法在生成新的FP-Tree时每次都要遍历调减模式基两次,导致系统需要反复申请本地以及数据库服务器的资源查询相同内容的海量数据,一方面降低了算法的效率,另一方面给数据库服务器产生高负荷,不利于数据库服务器正常运作。改进策略:针对 FP-Growth 算法的缺点,对经典算法进行改进,提出使用支持度计数二维表的方法,从而省去经典算法对条件模式基的第一次遍历,具体算法描述为:在第一次遍历事务集合 T 的同时创建二维向量,记录每个事务中各个项两两组合出现的支持度计数。如有事务 “A,B,C,D”,则二维向量表中(A,B)、(A,C)、(A,D)、(B,C)、(B,D)、 (C,D)项都需要加 1。其中向量(C,B)和(B,C)是两个不同的向量。 利用递归方式创建 条件下(Null)的条件 FP 子树时,无需两次遍历条件模式基(其中第一次遍历条件模式基可得到支持度计数列表,第二次遍历条件模式基可插入树节点从而创建 FP 树)。支持度计数列表可以从支持度计数二维向量列表中获得。抽取二维向量表中的与 Ei 相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论