频繁模式集挖掘算法TFPDM的研究
- 格式:pdf
- 大小:247.13 KB
- 文档页数:4
频繁模式集挖掘算法TFPDM的研究
林红飞。庄卫华
(河海大学计算机及信息工程学院,南京210098)
E—mail:cosmos@hhu.edu.cn
摘 要:受经典的Apriori算法思想和FP—Growth算法思想的启发.在结合两者优点的基础上提出了一种新的算法思想,
它是对传统的FP~Growth算法的变形。该算法只需对数据库扫描一次,可以同时对全局和局部频繁模式集进行挖掘,减
少了对发生增益数据库挖掘的费用。理论分析表明算法是有效的、可行的。
关键词:全局和局部频繁模式集:变形的频繁集挖掘算法;FP-Growth算法;Apriori算法
文章编号:1002—8331(2006)32—0160—04 文献标识码:A 中图分类号:TP311
TFPDM for Mining Frequent Patterns
LIN Hong—fei,ZHUANG Wei-hua
(College of Computer and Information Engineering.Hohai University,Nanjing 210098,China)
Abstract:This paper provids a new and effective algorithm based on Apriori and FP_Growth.It is a transformation of FP-Growth.It not only mines the global and local ̄equent patterns,but also reduces the expenditure of updated
database's mining.What's more,it only needs one database’S scanning.Through analyzing,we can see it is effective and
feasible,
Key words:global and local frequent patterns;TFPDM;FP—Growth;Apriori
1 前言
频繁模式是产生关联规则的基础.是数据挖掘的重要内容
之--[“。Agrawal于1993年首次提出布尔型关联规则问题及相
应的Apriori算法【2l l后,数据挖掘领域的研究者在关联规则挖
掘与更新上做了大量的工作【4_51。其中,韩家炜等人提出的频繁
模式集(或称频繁集、频繁项目集)挖掘算法(FP—Growth)…采用
压缩FP—tree存储结构。打破了Apriori—like框架.可以有效地
提高频繁模式集的挖掘效率。
但Apriori算法每生成一个K项频繁集都会产生大量的候
选集和对数据库扫描一次.这成为Apriori算法严重的瓶颈…;
FP—Growth算法对数据库至少要进行2次扫描.同时如何提高
经常发生增益的数据库的挖掘效率也是一个值得关注的问题,
致使这些算法在大型数据库中的应用效率不容乐观。
本文提出了一种变形的频繁集挖掘算法(Transformative
Frequent Patterns Mining Algorithm.TFPDM).它有别于现有的
基于FP—tree思想的挖掘算法,它的主要的特点是:只要对数据
库扫描一次。现实生活中数据库中的信息随着时间的推移一直
在增益.当要对整个数据库重新挖掘频繁集时.采用本算法的
数据结构只要扫描一次数据库中信息发生增益的那部分,而不
必对数据库中以前的信息重新扫描,同时利用本算法的数据结
构可以挖掘目前一段时间内的局部频繁集:与FP—Growth算法
相比,除了在数据结构方面采用FP—tree思想外,算法的各步骤
都有别于FP—Growth算法:通过实验可以发现Apriori算法寻
找频繁集主要的计算是在生成频繁2一项集Lk上 。TFPDM算
法采用的Apriori思想只要生成少于m个2一项候选集(m是项
目的总数),并只要对有限个数的事务集进行扫描。 2相关知识
2.1 支持度和频繁集
设,= ,i ,…,i l是m个不同项目(或称事务元素)的集
合,给定事务数据库DB.DB.count表示数据库中的事务数。 、 y ,,DB的关联规则的形式形如: —y,此关联规则的支持度
(support):contain(X,Y)/DB、count,contain(X,Y)表示DB中同
时包含 和y的事务数:此关联规则的置信度(confidence)是
个条件概率:contain(X)/contain(Y)。contain(X)和contain(y)
分别表示DB中包含 的事务数和包含y的事务数。 在DB
中的支持度是指DB中包含 事务的百分比,记为X.sup。 频繁模式:如果 的支持度不小于用户给定的最小支持
度阈值S,则称 为DB中的频繁模式,模式的项目个数K称
为项目集的维数或长度.此频繁模式也称为频繁K一项目集。
全局频繁模式集:集合中每个元素 相对于整个数据库
来说都是频繁模式。
局部频繁模式集:集合中每个元素 相对于某局部数据
库来说都是频繁模式。 最大频繁模式:频繁模式,Y的所有超集都是非频繁模式,
则称 为最大频繁模式。
性质1若 为频繁模型.则 的所有非空子集为频繁模
型。 显然,任何频繁模型都是某最大频繁模型的子集,所以可
以把发现所有频繁模型的问题转化为发现所有最大频繁模型
的问题。
2.2频繁模式树FPjree
Apriori算法具体内容请读者查阅参考文献【2】。韩家炜等人
提出的频繁模式集挖掘算法(FP—Growth)中,FP_tree每个节点
作者简介:林红飞,硕士研究生,主要研究方向数据挖掘、机器学习;庄卫华,副教授,主要研究领域为数据库应用。
160 2O06.
32计算机工程与应用 维普资讯 http://www.cqvip.com 南4个域组成:节点名称name、节点计数count、节点链next、
指向该节点的同名链link及父节点指针parent。另外,为方便 树的遍历,创建了一个频繁项目头表Htable,它南两个域组成:
项目名称name和项目链头head,其中项目链头指向FP_tree 中与之名称相同的第l节点。频繁模式树FP—tree的构造算法
如下:
(1)扫捕数据库DB一遍。得到频繁项目的集合F和每个
频繁项目的支持度。把,按支持度递降排序,结果记为 。
(2)创建FP—tree的根节点,记为丁,并且标记为’null’,然
后对DB中的每个交易Trans做如下的步骤
根据 中的顺序.选出并排序每个交易Trans中的频繁项
目。把Trans中排好序的频繁项列表记为 { 1 ∈,l,其中
是Trans的第 个元素,P是Trans的元素有序列表。调用in—
sert—tree(P,T)。 函数insert_tree(P,T)的运行如下:
根据P沿着 的节点next顺序地遍历 ,在 元素时,如
果 有一个子结点Ⅳ.其中N.name=P ̄.name.则将Ⅳ的count 域值增加l;否则,创建一个新节点Ⅳ,使它的count为1.使它
的父节点为7’,并且使它的link和那些具有相同name域串起
来。如果P余下的集合非空.记为NP.则递归调用inesrt_tree
(NP,N)。 性质2 ChilNode为FP_tree中的一节点.ParNode为
ChilNode的祖先节点.则ChilNode.count< ̄ParNode.count
3 TFPDM算法
3.1 TFPDM算法设计
3.1.1数据结构设计
沿用FP—Growth数据结构的思想,TFPSM算法采用的数据 结构南两部分组成:记录项目元素头表Htale(图1)和NeW
FP_tree树中节点node的数据结构(图2),可以看出新的数据
结构在原来FP—Growth的数据结构基础 增加了一些功能成
员。需要说明的是之所以采用这样的数据结构 目的是全局和
局部频繁模式集的挖掘在同一颗树七进行.只需要构造New
FP_tree树一次,不必分别构造两棵树,同时强调信息的复用
性,有利于今后的再挖掘,提高挖掘的速度。
下面对罔种参数的做一些说明:
!me【 =:0unl_ !!
图l Htable
Name Gpass—count Lpass—count Parent Next i Neighbor Name:事务元素的名称,它是事务的基本组成单位.在 Htable表中它以一定的顺序上下排列并且为关键字段
G—count:用于记录该事务元素在数据库中出现的总次数,
在挖掘全局频繁模式集时,用它来判断该元素是否为全局频繁
模式,如是该元素则参加求全局频繁集的运算。
L count:用于记录该事务元素最近一段时间比如说最近
一个月,在数据库中出现的总次数,在挖掘最近局部频繁模式
集时,用它来判断该元素是否为局部频繁模式,如是则该元素 参加求最近一段时间的频繁模式集的运算。
IsFrequent:是个布尔值,南阀值min.sup、G—count或
L_count决定其值.yes表示该元素参加求数据库全局或局部
频繁集的运算.反之.则不参加。
Neighbor:一个指针.连接在树中与Name同名的领域元 素,最末端的Neighbor值为Null。
GPass_count:在构造New FP_tree时,用于记录该元素在
某分枝上经过的总次数,挖掘全局频繁模式集用。
LPass_count:用数据库中最近一段时间里的事务更新New
FP—tree时,记录该事务元素在某分枝 经过的总次数。注意:
在构造或更改New FP_tree时.GPass_count++和LPass_count++ 是同时进行的。
Parent:用于该元素指向其在New FP_tree中的父节点。
Next:用于该元素指向其在New FP-tree中的子节点
3.1.2如何构造New FP_tree
在TFPDM算法中,事务元素的排序方法与FP—Growth采
用的方法不同,它是预先对所有的事务元素按某一同定的次序 进行排序,而不必通过扫描数据库求出每个元素的支持度后,
按照它们的支持数的大小进行排序
给定事务数据库DB,,=f ., :,…, }是DB的m个不同项 目元素有序的集合。T/EDB.但遍历到 时。先对n中的项目
元素进行排序,然后调用Nlnsert—Tree( , ),这里的构造函数
与第一部分介绍的Insert_Tree()运算过程大体相同,只不过多
了对新添加的字段的赋值, 是树的根节点,开始为NULL一
算法的输入:事务集;有m个排列表项的Htable,Name字
段不为空和T--NULL。算法的输出:New FP_tree 罔3是对具体
的小型数据库用Nlnsert—tree()函数构造生成的FP tree树,为
简单起见.将Htable表中的每个基本元素的G COUnt和
L count相等,将 中每个节点的GPass_count和LPass_count 相等,还有就是组成每个事务的基本元素已好序。
3.1.3利用构造生成的New FP_tree树产生频繁项目集