于大量的研究、问题的多方面扩展和广泛的应用研究。频繁模式挖掘已经远远超过了事务数据。这里,我们介绍其他多种挖掘模式类型的方法,包括多层模式、多维模式、稀有模式、负模式、受约束的频繁模式和巨型模式挖掘。书上的内容都是比较浅显,更多的是介绍性的东西,可能需要到实际工作上才能理解更深一些。
挖掘多层关联规则
对于许多应用,在较高的抽象层(抽象的大类,例如电脑,而不是具体某种品牌和型号的电脑)发现的强关联规则,可能有很高的支持度,但可能是常识性知识。我们希望往下钻,在更细节的层次发现新颖的模式。另外一方面,在较低或原始抽象层,可能有太多的零散模式,其中一些只不过是较高层模式的平方特化。
在这种较低层或原始层数据中很难发现有趣的规则模式,例如,“Dell Studio XPS 16 Notebook”和“Logitech VX Nano Cordless Laser Mouse”每个都在很少一部分事务中出现,则可能很难找到涉及它们的强关联规则。少数人同时购买它们,使得该商品集不太可能满足最小支持度。然而,我们预料,在这些商品的泛化抽象之间,如在”Dell Notebook” 和”Cordless Mouse”之间,可望更容易发现强规则。这种在多个抽象层的数据上挖掘产生的规则称为多层关联规则,一般采用如下自顶向下的方法:
- 对于所有层使用一致的支持度(称作一致支持度):在每一层挖掘时,使用相同的最小支持度阈值
然而,一致支持度方法有一些困难。较低层次抽象的项不大可能象较高层次抽象的项出现得那么频繁。如果最小支持度阈值设置太高,可能丢掉出现在较低抽象层中有意义的关联规则。如果阈值设置太低,可能会产生出现在较高抽象层的无兴趣的关联规则。这导致了下面的方法:
- 在较低层使用递减的支持度(称作递减支持度):每个抽象层有它自己的最小支持度阈值。抽象层越低,对应的阈值越小。
- 使用基于项或基于分组的最小支持度:例如,用户可以根据产品价格或者根据感兴趣的商品设置最小支持度,对如”价格超过1000美元的照相机”或”平板电脑” 设置特别低的支持度,以便特别关注这类商品的关联模式
为了从具有不同支持度阈值的组中挖掘混合项模式,通常在挖掘中取所有组的最低支持度阈值。这将避免过滤掉有价值的模式,该模式包含来自具有最低支持度阈值组的项。同时,每组的最小支持阈值应该保持,以免从每个组产生无趣的项集。
检查多层关联规则冗余性
挖掘多层关联规则一个严重的副作用是,由于项之间的“祖先”关系,可能产生一些多个抽象层上的冗余的规则,例如:”desktop computer”是”IBM desktop computer”的祖先,有以下规则:

如果后一个具有较小一般性的规则不提供新的信息,应当删除它。让我们看看如何来确定。规则 R1 是规则 R2 的祖先,如果R1能够通过将R2中的项,用它在概念分层(分配比率)中的祖先替换得到,则可以将R2删除。
以上诉规则例子:假定规则(6.9)具有 70%置信度,8%支持度,并且大约四分之一的”desktop computer”销售是”IBM desktop computer”。可以期望规则(6.10)具有大约 70%的置信度(由于所有的”IBM desktop computer”样本也是” desktop computer”样本)和 2%(即,8%×1/4)的支持度。也就是说,根据实际销量的分层可以通过R1推到出R2的规则与规则(6.10)相差无几,则R2规则是冗余的。
挖掘多维关联规则
本节,你将学习挖掘多维关联规则的方法。多维关联规则是涉及多个属性或谓词的规则(例如,关于顾客的 buys 和顾客的 age 的规则)。我们把规则中每个不同的谓词称作维。例如:
其中,数据库属性可能是分类属性和量化属性(数值),对于量化属性,挖掘多维相关规则的计数可以分为两种基本方法:
- 第一种方法:使用预定义的概念分层对量化属性离散化,例如,income 的概念分层可以用于以区间值,如“0…20K”代替
- 第二种方法:根据数据的分布,将量化属性离散化或聚类到“箱”
正如前面讨论的,我们可以把量化属性离散化为多个区间,而后在关联挖掘时把它们看做是分类属性。然而,这种简单的离散化可能导致产生大量的规则,其中许多规则可能没什么用。这里我们介绍三种方法,帮助克服这一困难,以便发现新颖的关联关系:
- 1、数据立方体方法
- 2、基于聚类的方法
- 3、揭示异常行为的统计学方法
挖掘稀有模式和负模式
迄今为止,介绍的都是挖掘频繁模式,然而,有时令人感兴趣的不是频繁模式,而是发现稀有的模式(例如钻石表的销售是稀有的),或发现反映项之间的负相关的模式(例如发现顾客频繁地购买经典可口可乐或无糖可乐,但不可能一起都买)。
- 稀有模式:是指其支持度低于(或远低于)用户指定的最小支持度阈值的模式。然而,由于大多数项集的出现频度通常都低于甚至远低于最小支持度阈值,因此实践中允许用户指定稀有模式的其他条件是可取的。
- 负相关模式:如果项集X和Y 都是频繁的,但很少一起出现$(sup(X \cup Y) < sup(X) \times sup(Y))$ ,则项集X和Y是负相关的,并且$X\cup Y$ 是负相关模式.如果$(sup(X \cup Y) \ll sup(X) \times sup(Y))$, 则项集X和Y是强负相关的,并且$X\cup Y$是强负相关模式。
然而,上面这个公式度量不是零不变的,只能有效地解决非零事务的数据。如果数据库存在大量的零事务,则应该使用零不变度量Kulczynski,下面给出具体定义:
零不变负相关模式:假设项集X和Y都是频繁的,即$sup(X)\geq min_sup$ ,$sup(Y)\geq min_sup$ , 其中$min_sup$是最小支持度阈值。如果有$(P(X|Y)+P(Y|X))/2<\epsilon$,其中$\epsilon$是负模式阈值,则$X\cup Y$是负相关模式。
基于约束的频繁模式挖掘
作为限制搜索空间的约束条件,这种策略称为基于约束的挖掘。
元规则就是挖掘用户感兴趣的规则的语法形式,例如:
其中,P1和P2是谓词变量,在挖掘过程中被例示为给定数据库的属性;X是变量,代表顾客;Y和W是分别赋给P1和P2的属性值。
对于规则约束,如何使用规则约束对搜索空间进行剪枝?主要有两种方法:1、对模式空间剪枝;2、数据空间剪枝
对模式空间剪枝
根据约束如何与模式挖掘过程配合,模式剪枝约束可以分为五类:1)反单调的;2)单调的;3)简洁的;4)可转变的;5)不可转变的(这个不重要)
- 反单调的:规则约束$”sum(I.price)\leq 100”$,如果一个候选项集中的商品价格和大于 100 美元,则该项集可以由搜索空间剪去,因为向该项集中进一步添加项将会使它更贵,因此不可能满足限制。换一句话说,如果一个项集不满足该规则限制,它的任何超集也不可能满足该规则限制。如果一个规则具有这一性质,则称它是反单调的。
- 单调的:规则约束$”sum(I.price)\geq 100”$,集合中的单价和大于 100,进一步添加更多的项到此项集将增加价格,并且总是满足该限制。因此,在项集 I 上进一步检查该限制是多余的。换言之,如果一个项集满足这个规则限制,它的所有超集也满足。如果一个规则具有这一性质,则称它是单调的。
- 简洁:对于这类约束,我们可以枚举并且仅仅列出所有确保满足该限制的集合。因为有一个精确“公式”,产生满足简洁限制的所有集合,在挖掘过程中不必迭代地检验规则限制
- 可转变的约束:有些限制不属于以上三类。然而,如果项集中的项以特定的次序排列,则对于频繁项集挖掘过程,限制可能成为单调的或反单调的。例如,限制“avg(I.price)”既不是反单调的,也不是单调的。然而,如果事务中的项以单价的递增序添加到项集中,则该限制就成了反单调的。类似的,如果是递减顺序添加则是单调的。
对数据空间剪枝
第二种对基于约束的频繁模式挖掘的搜索空间进行剪枝的方法是对数据空间剪枝。这种策略是剪掉对其后挖掘过程中可满足模式的产生没有贡献的数据片段。例如,对于约束是数据简洁的,如果一个挖掘查询要求被挖掘模式必须包含数码相机,则可以在挖掘过程开始减剪掉所有不包含数码相机的事务。对于约束的反单调的,基于当前模式,如果一个数据项不满足数据反单调约束,则可以剪掉它,因为在剩下的挖掘过程中,它不能对当前模式的超模式的产生有任何贡献。
巨型模式
对于数据库有数百或者数千维的数据,用已介绍方法来挖掘高维数据是非常低效的,一种是使用垂直格式数据,之前已经介绍过了。另外一种新的方向是用模型融合,用于巨型模式,即非常长的模式(例如蛋白质的DNA长序列)。这种方法在模式搜索空间中跳跃,得到巨型频繁模式完全集的一个很好的近似解。
对于Apriori和FP-growth算法,会不可避免产生大量中型模式,使得它不可能达到巨型模式。因此提出了模式融合,它融合了少量较短的频繁模式,形成巨型模式候选。
书上提到了核模式的概念,这里没怎么看懂,觉得是核模式代表了一定的鲁棒性。但是书上也直接给出了推论,巨型模式比较短模式有更多的核模式,更鲁棒。也就是说,如果从该模式中去掉少量项,则结果模式会有类似的支集。巨型模式较低层的核模式叫做核后代。所以基于这个特性,模式融合可以融合少量较短的频繁模式。这也是它为什么被称为模式融合的原因 ,因此巨型模式可以通过合并其核模式的真子集产生,例如, abcef可以通过它的两个核模式ab和cef产生。而不需要用单个项增量地扩展,而是与池中多个模式进行凝聚,这样能够迅速地到达巨型模式。
模型融合包括以下两个阶段:
1、池初始化
模式融合假定有一个短频繁模式的初始池。这是一个短长度的频繁模式挖掘集。这个初始值可以用任意已有的有效挖掘算法挖掘。
2、迭代的模式融合
用户首先指定一个参数K的值(K代表挖掘模式的最大个数),然后从当前池中随机地选取K个种子,对于每个种子,我们找出直径为ττ的球内的所有模式。然后,每个”球“中的所有模式融合在一起,形成一个超模式集,这些超模式形成新的池,然后再从这个新的池子中随机地找到K个种子,然后重复上面的工作,一直迭代,直到不能融合为止
因此,该方法可以绕过中型模式,通往巨型模式。
7.5/7.6的内容暂时不是特别重要,用到再补。