数据挖掘之关联分析六(子图模式)

子图模式

频繁子图挖掘(frequent subgraph mining):在图的集合中发现一组公共子结构。
html

图和子图

图是一种用来表示实体集之间联系的数据结构。算法

子图,图\(G' = (V', E')\)是另外一个图\(G = (V, E)\)的子图,若是它的顶点集V'是V的子集,而且它的边集E'是E的子集,子图关系记作\(G' \subseteq s G\)数据结构

支持度,给定图的集族\(\varsigma\), 子图\(g\)的支持度定义为包含它的全部图所占的百分比。
\[s(g) = \frac{|{G_i | g \subseteq s G_i, G_i \subseteq \varsigma}|}{ | \varsigma | }\]
spa

频繁子图挖掘

频繁子图挖掘 给定集合\(\varsigma\)和支持度阈值\(minsup\),频繁子图挖掘的目标是找出使得全部\(s(g) \geq minsup\)的子图\(g\).3d

该定义适用于全部类型的图,可是本章主要关注无向连通图(undirected,connected graph)。定义以下htm

  1. 一个图是连通你的,若是图中每对顶点之间都存在一条路径。
  2. 一个图是无向的,若是它只包含无向边。

挖掘频繁子图的是计算量很大的任务,对于d个实体的数据集,子图总数为
\[\sum_{i = 1}^d C_d^i \times 2^{i(i-1)/2}\]
其中,\(C_d^i\)是选择i个顶点造成的子图方法数,\(2^{i(i-1)/2}\)是子图的顶点之间边的最大值。
blog

候选的子图不少,但不连通的子图一般被忽略,由于它们没有连通子图使人感兴趣。
频繁子图挖掘的一种蛮力方法是,产生全部连通子图做为候选,并计算各自的支持度。候选子图比传统的候选项集的个数大得多的缘由为事务

  1. 项在项集中之多出现一次,而某个标号可能在一个图中出现屡次。
  2. 相同的顶点标号对能够有多重边标号选择。

给定大量候选子图,即便对于规模适应的图,蛮力方法也可能垮掉
字符串

类Apriori方法

1.数据变换,一种方法是将图变换为相似事务的形式,使得咱们可使用诸如Apriori等已有的算法。在这种状况下,边标号和对应的顶点标号\((l(v_i), l(v_j))\)组合被映射到一个项。事务的宽度由图的边数决定。可是,只有当图中每一条边都具备惟一的顶点和边标号组合时,该方法才可行。get

2.频繁子图挖掘算法的通常结构
挖掘频繁子图的类Apriori算法由如下步骤组成,

  1. 候选产生:合并频繁(k-1)-子图对,获得候选k-子图。
  2. 候选剪枝:丢弃包含非频繁的(k-1)-子图的全部候选k-子图。
  3. 支持度计数:统计\(\varsigma\)中包含每一个候选的图的个数。
  4. 候选删除:丢弃支持度小于minsup的全部候选子图。

候选产生

在候选产生阶段,合并(k-1)-子图为k-子图,首要问题是如何定义子图的大小k。经过添加一个顶点,迭代地扩展子图的方法称做顶点增加(vertex growing)。k也能够是图中边的个数,添加一条边到已有的子图中来扩展子图的方法称做边增加(edge growing)。

为了不产生重复的候选,咱们能够对合并施加条件:两个(k-1)-子图必须共享一个共同的(k-2)-子图,共同的子图称为核(core)

1.经过顶点增加来产生候选
经过添加一个新的结点到已经存在的一个频繁子图上来产生候选。可使用邻接矩阵来表示图,每一项M(i,j)为连接\(v_i\)\(v_j\)的的边或者0。

合并过程:
邻接矩阵\(M^{(1)}\)与另外一个邻接矩阵\(M^{(2)}\)合并,若是删除\(M^{(1)}\)\(M^{(2)}\)的最后一行和最后一列获得的子矩阵相同,结果获得的候选矩阵为在\(M^{(1)}\)后面添加\(M^{(2)}\)的最后一行和最后,新矩阵的其他项为0,或者链接顶点对的合法标号替换。
上面图中合并后获得的\(G3\)的?边能够经过考虑全部可能的边标号从而大大增长了候选的子图个数。

2.经过边增加产生候选
变增加将一个新的边插入到一个已经存在的频繁子图中。与顶点增加不一样,结果子图的顶点个数不必定增加。

边增加合并过程:
一个频繁子图\(g^{(1)}\)和另外一个频繁子图\(g^{(2)}\)合并,仅当从\(g^{(1)}\)删除一条边后获得的子图与从\(g^{(2)}\)中删除一条边后获得的子图的拓扑等价,合并后的结果是\(g^{(1)}\)添加\(g^{(2)}\)那条二外的边。

拓扑等价:

G1中的每一个顶点都等价,G2中有两对顶点等价:\(v_1\)\(v_4\)\(v_2\)\(v_3\)。G3没有等价顶点。

下面两个(k-1)-子图G1和G2,相同的核用矩形框表示

根据a与c是否相等和b与d是否相等,合并获得的结果有

当一对(k-1)-子图相同的核有多个时,会产生更多的候选子图,以下所示,有两个相同的核

候选剪枝

须要剪去(k-1)-子图非频繁的候选。候选剪枝能够,经过如下方式实现。
相继从k-子图中删除一条边,并检查获得的(k-1)-子图是否连通且频繁。若是不是,则舍弃。
为了检查(k-1)子图是否频繁,须要将其与其余的(k-1)-子图匹配。断定连个图是够拓扑等价,即图同构。

处理图同构
处理图同构的问题的标准方法是,将每一个图都映射到一个惟一的串表达式,称做代码或规范标号(canonical label)。若是两个图是同构的,则它们的代码必定相同。这个性质可使得咱们经过比较图的规范编号来检查图同构。

构造图的规范标号的第一步是找出图的邻接矩阵表示。可利用矩阵中的基本矩阵进行行列互换。
第二步是肯定每一个邻接矩阵的串表示,因为邻接举证是串表示的,所以只须要根据矩阵的上三角阵部分构造串就足够了。
第三步比较图的全部串表示,并选出具备最小(最大)字典序值的串,确保每一个图的字符串惟一。

支持度计数

支持度计数对于每一个\(G \in \varsigma\),必须确保包含G中的全部候选子图。加快的策略是维护一个与每一个频繁(k-1)-子图相关联的图ID表,若是新的候选k-子图经过合并一对拼单(k-1)-子图而生成,就对它们的对应图ID表求交集。最后,子图同构检查就在表中的图上进行,肯定它们是否包含特定的子图。

数据挖掘之关联分析一(基本概念)
数据挖掘之关联分析二(频繁项集的产生)
数据挖掘之关联分析三(规则的产生)
数据挖掘之关联分析四(连续属性处理)
数据挖掘之关联分析五(序列模式)
数据挖掘之关联分析六(子图模式)
数据挖掘之关联分析七(非频繁模式)

相关文章
相关标签/搜索