数据挖掘中的模式发现(三)FpGrowth算法

简介

前两篇介绍了关联规则挖掘的一些基本概念和经典的Apriori算法,Aprori算法利用频繁集的两个特性,过滤了很多无关的集合,效率提高不少,但是我们发现Apriori算法是一个候选消除算法,每一次消除都需要扫描一次所有数据记录,造成整个算法在面临大数据集时显得无能为力。

今天我们介绍一个新的算法,FpGrowth算法,来挖掘频繁项集,它的效率比Aprori算法高很多。

FpGrowth算法通过构造一个树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高。

基本结构与基本概念

FPTree算法的基本数据结构,包含一个一棵FP树和一个项头表,每个项通过一个结点链指向它在树中出现的位置。基本结构如下所示。需要注意的是项头表需要按照支持度递减排序,在FPTree中高支持度的节点只能是低支持度节点的祖先节点。

数据挖掘中的模式发现(三)FpGrowth算法_第1张图片

FP-Tree

就是上面的那棵树,是把事务数据表中的各个事务数据项按照支持度排序后,把每个事务中的数据项按降序依次插入到一棵以NULL为根结点的树中,同时在每个结点处记录该结点出现的支持度。

条件模式基

包含FP-Tree中与后缀模式一起出现的前缀路径的集合。也就是同一个频繁项在PF树中的所有节点的祖先路径的集合。比如I3在FP树中一共出现了3次,其祖先路径分别是{I2,I1:2},{I2:2}和{I1:2},其中冒号后面的数字表示频度。这3个祖先路径的集合就是频繁项I3的条件模式基。

条件树

将条件模式基按照FP-Tree的构造原则形成的一个新的FP-Tree。比如上图中I3的条件树就是:

数据挖掘中的模式发现(三)FpGrowth算法_第2张图片

实例

我们演示一下FpTree的构造过程。

现有Table如下:

TID Items
T1 {牛奶,面包}
T2 {面包,尿布,啤酒,鸡蛋}
T3 {牛奶,尿布,啤酒,可乐}
T4 {面包,牛奶,

你可能感兴趣的:(机器学习,&,深度学习,机器学习与数学模型,大数据,数据挖掘)