本文的笔记来源于<<Web 数据挖掘>> Bing Liu著
研讨会:
专家:
http://adrem.ua.ac.be/~goethals/
FP-growth方法来源:
http://blog.sina.com.cn/s/blog_6fb7db430100vdj7.html
1. 关联规则的基本概念
(1)关联规则
并发关系(Cooccurance Relationships)(Association)
可用于Web使用挖掘(Web Usage Mining)、点击流(Clickstreams)、语言学模式(Language or Linguistic Pattern)
(2)问题描述
设I = {i1,i2,......im}是一个项目(Item)集合
T = {t1,t2,......tn}是一个(数据库)事务 (Transaction)集合,其中每个事务 ti是一个项目集合,并满足ti属于I
一个关联规则是一个如下形式的蕴涵关系:
X->Y,其中X属于I,Y属于I且X与Y的交集为空,X(或Y)是一个项目的集合,称作项集(Itemset),并称X为前件,Y为后件。
(3)支持度、置信度
支持度(support)= X与 Y的同时出现的事务数目/总的T的数目(可用于评价事务的覆盖率,若太小,没有意义)
置信度(confidence)= X与 Y的同时出现的事务数目/仅出现X的事务的数目 (决定规则的可预测度Predictability)
最小支持度(minsup)
最小置信度(minconf)
(4)关联规则挖掘的数据格式
事务数据
类别,属性值转变成为属性-值对
2. Apriori算法、FP-growth算法
Apriori算法分两步:
生成所有频繁项目集:一个频繁项目集(Frequent Itemset)是一个支持度高于minsup的项集。
从频繁项目集中生成所有可信关联规则:一个可信关联规则(Confient Association Rule)是置信度大于minconf的规则。
(1)频繁项目集生成
向下封闭属性(Downward Closure Property):若一个项集满足某个最小支持度要求,则这个项集的任何非空子集必须都满足这个最小支持度。
逐级搜索(Level-wise Search):
x-频繁项目集,表示集合含 有x个元素
(2)FP-growth算法
FP的全称是Frequent Pattern,在算法中使用了一种称为频繁模式树(Frequent Pattern Tree)的数据结构。FP-tree是一种特殊的前缀树,由频繁项头表和项前缀树构成。所谓前缀树,是一种存储候选项集的数据结构,树的分支用项名标识,树的节点存储后缀项,路径表示项集。
第二步根据支持度对频繁项进行排序是本算法的关键。第一点是,通过将支持度高的项排在前面,使得生成的FP-tree中,出现频繁的项更可能被共享,从而有效地节省算法运行所需要的空间。另一点是,通过这种排序,可以对FP-tree所包含的频繁模式进行互斥的空间拆分,得到相互独立的子集,而这些子集又组成了完整的信息。
FP-tree子集分割方法
如上图,求p为前缀的投影数据库:根据头表的指针找到FP-tree的两个p节点,搜索出从这两个节点到树的根节点路径节点信息(包含支持度)。然后累加路径节点信息的支持度,删除非频繁项。对剩下的频繁项按照上一节的方法构建FP-tree。过程如下图所示:
FP-Growth算法流程:
基本思路是:不断地迭代FP-tree的构造和投影过程。
对于每个频繁项,构造它的条件投影数据库和投影FP-tree。对每个新构建的FP-tree重复这个过程,直到构造的新FP-tree为空,或者只包含一条路径。当构造的FP-tree为空时,其前缀即为频繁模式;当只包含一条路径时,通过枚举所有可能组合并与此树的前缀连接即可得到频繁模式。
3. 多最小支持度的关联规则挖掘
problem:稀有项目、组合爆炸等问题
指定多个最小支持阈值,比如对每个项目都指定一个最小项目支持度(Minimum Item Support,MIS),则不同的项集根据它所饮食的项目的不同需要满足不同的最小支持度。
(1)扩展模型
扩展模型中,一条规则最小支持度采用在规则中出现的所有项目的最小项目支持度(MIS)。
即数据集中,每个项目都能各自拥有一个用户指定的MIS值,通过对不同的项目指定不同的MIS值,用户可以很方便地对不同规则设置不同的支持度要求。
规则R:一条规则R的最小支持度为R中所有项目最低的MIS值。
为不把同时含有频繁项目和稀有项目的项集作为频繁项目集生成,引入支持度差别限制(Support Difference Constraint)
(2)挖掘算法:MS-Apriori算法
MS-Apriori算法:当仅有一个MIS值时,算法就退化为Apriori算法;和Apriori算法一样,MS-Apriori算法也是基于逐级搜索的,通过多次遍历数据之后产生所有频繁项目集。关键是对I中的MIS值进行升序排序,这个排序是固定的,在算法之后的操作中都会用到。每个项集中的项目都依次排序。
4. 分类关联规则挖掘
问题描述:设T为一个包含n个事务的事务数据集,每个事务都标有一个分类y。设I为T中所有项目的集合,Y为所有分类标识(Class Labels)(或目标项目),且有I与Y的交集为空,一个分类关联规则(Class Association Rules, CAR)是指:X -> y,其中X是I的子集,y是Y的子集。
支持度和置信度的定义和一般的关联规则挖掘一样
分类规则较一般关联规则有两点不同:
首先CAR的后件只有一个项目,而一般的关联规则的后件可以有任意多个项目;其次,CAR的后件y只能够从分类标识集合Y中选取,也即y是Y的子集,I中的项目都不能作为后件,Y中的项目也都不能作为前件。相反,一般的关联规则的前件和后件以是任何项目。
目标:分类关联规则挖掘是指生成完整的满足用户指定的最小支持度(minsup)和最小置信度(minconf)限制的CAR集合。
多最小分类支持度(Multiple Minimum Class Supports):用户可针对不同的类别指定不同的最小支持度
多最小项目支持度(Multiple Minimum Item Supports):用户可对每个项目指定一个最小支持度值(可以是分类项目或非分类项目)
支持度差别限制:
5. 序列模式的基本概念
关联规则一般不考虑事务间的顺序,而在很多应用中这样的顺序是很重要的。
设I = {i1,i2,......,im}是一个项目的集合
序列(Sequence):是一个排过序的项集列表,s表示为<a1a2...ar>,其中ai是一个项集,也称为s的一个元素。
序列元素ai = {x1,x2,.......,xk}表示,xj是I的一个项目。
基数:一个序列中元素(或项集)的个数称为该序列的基数。
长度:一个序列中项目的个数称为该序列的长。长度为k的序列称为k-序列。
子序列
超序列
目标:给定一个输入数据序列(Data Sequence)集合S(或称序列数据库,Sequence Database),序列模式挖掘问题是指找出满足用户指定的最小支持度的序列。每个这样的序列称为一个频繁序列(Frequent Sequence),或者一个序列模式(Sequential Pattern),或者一个序列模式(Sequential Pattern)。一个序列的支持度是指S中包含有该序列的数据占总数据的比重。
6. 基于GSP挖掘序列模式
GSP算法:与Apriori算法思想一样,不同在于候选生成 函数
(1)单个最小支持度的GSP算法
(2)多个最小支持度的MS-GSP算法
与关联规则挖掘类似,仅采用单个最小支持度的序列模式挖掘在许多应用中也是很受限制的,而有些项目在数据中出现很频繁,而另一些则很少出现。
再次使用最小项目支持度(MIS)的概念
7. 基于PrefixSpan算法的序列模式挖掘
PrefixSpan算法不必生成候选序列
GSP算法可视为广度优先搜索查找所有的序列模式
PrefixSpan则采用深度优先搜索
(1)PrefixSpan算法
(2)多最小支持度挖掘
8. 从序列 模式中产生规则
(1)序列规则(Sequential Rules)
一个序列规则(SR)是指一个形如X->Y的蕴涵关系,其中Y是一个序列,X是Y的一个真子序列(Proper Subsequence),也即X是Y的一个子序列且Y的长度比X的大。一个序列规则X->Y在一个序列数据库S中的支持度为S中包含有Y的序列的比率。一个序列规则X->Y的置信度为S中既包含X又包含Y的序列在只包含X的序列中的比例。
(2)标签序列规则(Label Sequential Rules)
一个标签序列规则是形如X->Y的蕴涵关系,其中Y是一个序列,X是一个将Y中的一些项目替换成通配符而得到的序列,一个通配符用一个“*”表示,可以匹配任何项目。被替换掉的项目一般来讲都是很重要的,称为标签(Label),所有标签形成数据集中一个很小的项目集合。
(3)分类序列规则(Class Sequential Rules)
分类序列规则(CSR)和分类关联规则(CAR)类似,设S为一个数据序列的集合,每个序列一个分类标记y,设I为S中所有项目的集合,Y为所有分类标记的集合,I与Y的交集为空。
输入数据D可以表示成{(s1,y1),(s2,y2),...,(sn,yn)},其中si是S中的一个序列,yi是序列的分类。一个分类序列规则(CSR)是一个如下形式的蕴涵关系:
X->y,其中X是一个序列,y属于Y
对于一个数据实例(si,i),若X是si的一个子序列,则称(si,yi)覆盖X->y;而如果X是si的一个子序列且yi=y则称(si,yi)满足这个CSR。