从数据中挖掘函数依赖
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
从数据中挖掘函数依赖
摘要:介绍FD_Mine 的规则发现算法,以解决从数据中挖掘函数依赖(FD)的问题。用Armstrong 公理作为推理规则,找出函数依赖,确定等价属性,来减少数据集和已有函数依赖的数目。首先,描述了四个修剪规则,用于消除那些隐含在已发现的函数依赖中的函数依赖;然后,列出了FD —Mine 算法,这个算法将四个修剪规则应用于挖掘过程,结果证明了FD —Mine 的正确性和有效性。
关键字:发现函数依赖 挖掘函数依赖 Implication 规则 函数依赖 数据挖掘 知识发现 FD_Mine 关系数据库
1、介绍
规则挖掘是数据挖掘中非常重要的任务。规则挖掘是输入数据,输出规则的算法过程。如输出规则关联规则(Agrawal et al. 1993),蕴含规则(Baixeries 2004; Fagin1977; Ullman 1982)和函数依赖(Maier 1983; Ullman 1982)。本文设计一个有效的规则挖掘算法,用于从数据中挖掘函数依赖(FD ) (Mannila and Raiha 1994),函数依赖表示在关系r(U)中两个属性集之间值的约束关系(Maier 1983)( U 为有限的离散变量或属性)。例如,一个学生数据库,学生的姓名完全依赖于他们的学号。如果对所有的元组,()i j t t r U ∈,都有 FD X Y →满足()r U ,,X Y U ⊆那么得出:如果[][]i j t X t X =,则[][]i j t Y t Y =。
从数据库中发现常见的两种规则是蕴含规则和函数依赖。蕴含规则描述的是一对属性之间的关系,而函数依赖描述的是所有属性之间的关系。蕴含规则普遍存在于命题逻辑和数据挖掘中,用于二元数据。而函数依赖通常用于数据库理论,因为函数依赖适用于属性值为多值的数据(Baixeries 2007)。设I = 12{,...,...}i n i i i i 是事务数据库T 的属性集,且第i 个属性i i 的值域为{0,1},1代表事务中元组存在,反之0表示不存在。通常蕴含规则表示:只要属性X 存在,则Y 也存在(Baixeries 2007)。具体表示为:=1=1X Y ⇒,其中,,X Y I ⊂, ()={0,1}dom X ,()={0,1}dom Y ,=X Y ⋂∅。其中1也可以省略,如:{牛奶,鸡蛋} ⇒ {面包},表示如果买了牛奶和鸡蛋,一定会买面包。也就是如果牛奶和鸡蛋的值都为1,则面包的值也为1。而函数依赖的具体形式是:X Y →,其中=X Y ⋂∅,
也可以不是二元域,如:postcode → areacode 表示:无论有多少个邮政编码和地区码,都是邮政编码决定地区码。
简单的说,两种规则在语义上表示不同的粒度,蕴含规则X Y ⇒表示如果X 表示真,则Y 也表示真, FD X Y →表示如果两个元组在X 相同,则在Y 上也相同,蕴含规则和函数依赖的关系在Baixeries (2007), Carpineto et al. (1999), Fagin (1977), Ganter andWille (1999), Sagiv et al. (1981), Ullman (1982)上有详细的介绍。从语法角度讲,两种规则是等价的,因为他们都Armstrong 公理作为推理规则, (Maier 1983; Ullman 1982)。假设每个蕴含规则X Y ⇒对应于一个 FD X Y →。给定一个蕴含规则集P 和相应的函数依赖集Q ,蕴含规则中P 的闭包与FDS 中Q 的闭包一一对应。因为两者都是用Armstrong 公理递归地推导出来的。
所以,函数依赖中的推导方法也可以解决蕴含规则的推理问题。因为蕴含规则挖掘在规则挖掘和其它数据挖掘任务的理论与实践中起着重要的作用。
从数据中挖掘函数依赖非常重要,如:在化学领域,从化合物数据库中,发现化合物依赖于某种特定的结构属性是非常重要的(Huhtala et al.1999)。函数依赖也用于数据库管理(Flesca et al. 2005; Maier 1983; Ramakrishnan and Gehrke 2002)。在数据中发现函数依赖已经展开了广泛的研究(Baixeries2004; Flach and Savnik 1999; Huhtala et al. 1999, Lopes et al. 2000; Novelli andCicchetti 2001a, b; Wyss et al. 2001; Yao et al. 2002)。本文挖掘函数依赖的过程中引入更多的修剪规则,用于改进挖掘函数依赖算法。
为减小挖掘函数依赖的搜索空间,本文提出新的修剪规则使算法更快、更有效,并描述FD_Mine 算法,目的是用于发现函数依赖。FD_Mine 算法基本描述已经出版(Yao et al. 2002)。函数依赖可以分成两部分:一种是用Armstrong 公理(Maier 1983)推理规则从已有的函数依赖推导出来的;另一种是不能通过推导的函数依赖。因为第一种FDS 被认为是冗余的,所以FD_Mine 算法通过检测数据找第二种函数依赖,因为在数据库中检测函数依赖是非常费时的,所以,我们尽可能地修剪冗余的函数依赖。首先我们描述4种修剪规则,通过跳过搜索空间的方法修剪函数依赖的数目,这些修剪的函数依赖逻辑蕴含于已被检测到的函数依赖中。然后,介绍FD_Mine 算法,这个算法把4个修剪规则用于修剪过程中,我们证明了FD_Mine 的正确性,也就是说,我们已经证明了修剪过程中不会导致信息的丢失。实验结果显示:FD_Mine 算法在15组UCI 数据集和合成数据上是有效的。
FD_Mine 的一个创新点是:通过定义属性的修剪规则,来减少数据库中需要检测的函数依赖,这种方法在以前没有用过。如:如果 FD X Y →和 Y X →被检测到,那么含有Y 的候选项就不需要考虑了。因为X 和Y 是等价的。候选项是属性集上属性的结合。因此,FD_Mine 可以避免搜索那些逻辑包含在已经发现的函数依赖中的函数依赖。修剪等价属性是非常重要的,因为候选项的增加是随着属性数目的增加呈指数增加的。另外一个创新点是:所有的修剪规则都能够用非平凡闭包来确定并整合成修剪策略,以提高算法的性能,因为它可以减少需要从数据库中检测的函数依赖的总数。
剩下的部分是组织成6个部分,第2部分,相关工作的介绍;第3部分,介绍函数依赖的背景知识;第4部分,分析函数依赖的理论基础,4个修剪规则。第5部分,描述在找函数依赖的过程中运用4个修剪规则到数据挖掘过程中的算法。证明FD_Mine 的正确性。第6部分,记录了一系列的实验。最后,第7部分,结论。
2、相关工作
给定一个有限的离散属性集12={V ,V ...,V }n U ,在U 上的数据库D ,X 是在U 上属性的任意组合,X 可以是 FD X Y →的左边,同样, X Y →在D 上也满足。X 的可能值形成了函数依赖挖掘过程的搜索空间。如:半格图1,不包括顶层,为挖掘5个属性间的函数依赖关系描述了详细的算法搜索空间,图1展示了五个属性(A,B,C,D,E )所有非空集的组合,对于这些