小白入门关联规则之子图模式的类Apriori方法和gSpan算法挖掘学习 |
您所在的位置:网站首页 › gSpan算法过程 › 小白入门关联规则之子图模式的类Apriori方法和gSpan算法挖掘学习 |
关联规则之子图模式
关联规则之子图模式文章目的基本概念类apriori方法gSpan算法DFS编码最右扩展
实验研究参考博客参考文献
关联规则之子图模式
文章目的
了解子图模式在什么情况下使用理解子图模式的概念和原理学习子图模式的两种算法研究子图模式的算法应用
基本概念
首先我们要明白这样一个事情,在这么多关联规则的方法中,我们为什么要使用子图模式。这种子图模式在什么领域应用? 由于支持度是我们算法输入的一个参数,我们需要对支持度进一步说明该公式是什么意思,如下图2所示,g1是G1、G3、G4和G5的子图,支持度=4/5=80%。 首先明确我们的目标是频繁子图挖掘。那么频繁子图挖掘怎么判断是频繁呢?我们来看一下概念。频繁子图挖掘 :给定集合ς和支持度阈值minsup,频繁子图挖掘的目标是找出使得所有s(g)≥minsup的子图g。 具体的步骤分为以下四步: 候选产生候选剪枝支持度计数候选删除 我们来看候选产生,候选产生有两种常用方法,分别为顶点增长和边增长。顶点增长:通过添加一个新的结点到已经存在的一个频繁子图上来产生候选。可以使用邻接矩阵来表示图,每一项M(i,j)为链接vi和vj的边或者0。如下图3所示,顶点增长方法可以看作合并一对(k-1)X(k-1)的邻接矩阵,产生K x K邻接矩阵的过程。 图3 通过边增长产生候选,边增长将一个新的边插入一个已经存在的频繁子图中,与顶点增长不同,结果子图的顶点个数不一定增加,如下图4所示。 候选剪枝 产生候选k子图后,需要减去(k-1)子图非频繁的候选。候选简直可以通过如下步骤实现:相继从k子图中删除一条边,并检查对应的(k-1)子图是否连通且频繁。如果不是,则该候选k子图可以丢弃。意思是一次删除一条,总共有k个子图要检测。 为了检查(k-1)-子图是否频繁,需要将它和其他频繁(k-1)-子图匹配,判定两个图是否拓扑等价称为图同构问题。图同构是什么意思呢?即若图的顶点可以任意移动,边是弹性的,只要在不拉断的条件下,一个图可以变形为另一个图。如下图5所示,这两个图是同构的。 此时,我们可以知道图是同构的,又由于图的表示从不同顶点开始建立的邻接矩阵是不一样的,也就是说一个图的邻接矩阵表示有很多个。我们就需要对于每个图建立一个唯一的表示。也称为规范标号。若图是同构的,则规范标号相同,通过比较规范标号来检查图同构。那么如何构造图的规范标号呢?步骤如下: 找出图的邻接矩阵表示,利用矩阵中基本矩阵进行行列互换确定每个矩阵的串表示,由于邻接矩阵是对称的,因此只需要根据矩阵的上三角部分构造。比较图的所有串表示,并选出具有最小(最大)字典序值的串,确保每个图的串表达式唯一 当我们剪枝完成之后,将剪枝后剩余的候选图进行支持度计算,将其中大于支持度阈值的候选图记为满足条件的频繁子图。下面公式为计算支持度的公式。 所以,接下来介绍另外一种算法,gspan算法。gSpan算法通过执行最右扩展的策略减少了重复的产生,同时也保证了搜索结果的完备性。gSpan算法设计出一种新式的图的规范标号,将图的同构测试与重复图的检测结合到一块,避免了在已经获得的频繁子图集合中搜索重复图。 DFS编码 为了遍历图,gSpan算法采用深度优先搜索。初始,随机选择一个起始顶点,并且对图中访问过的顶点做标记。被访问过的顶点集合反复扩展,直到建立一个完全的深度优先搜索 (DFS) 树。这种新式的规范标号就是dfs编码。如下图所示,对于每个加下标的图, 可以将其转换成边序列。 给定图G 和G 的DFS树T ,一条新边e 可以添加到最右节点和最右路径上另一个节点之间(后向扩展);或者可以引进一个新的节点并且连接到最右路径上的节点(前向扩展)。由于这两种扩展都发生在最右路径上,因此称为最右扩展。
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |