图上模式挖掘

1. Introduction    

      十多年来,频繁模式挖掘一直是数据挖掘研究的焦点主题。大量文献致力于该研究领域,并取得了巨大进展,包括用于频繁项集挖掘、频繁序列模式挖掘、频繁子图挖掘的高效且可扩展的算法及其广泛的应用。

      频繁图模式是从图集合或单个海量图中找到的子图,其频率不低于用户指定的支持阈值。频繁子图可用于表征图集、区分不同的图组、对图进行分类和聚类以及构建图索引。

      Borgelt 和 Berthold [2] 通过对比不同类别之间频繁图的支持,说明了 HIV 筛查数据集中活性化学结构的发现。

      德什潘德等人 [7]使用频繁结构作为特征来对化合物进行分类。

      欢等人 [13]成功应用频繁图挖掘技术来研究蛋白质结构家族。

      Yan 等人还使用频繁的图形模式作为索引特征。 [35]执行快速图搜索。他们的方法明显优于传统的基于路径的索引方法。

      科尤图尔克等人.[18]提出了一种检测生物网络中频繁子图的方法,其中观察到代谢网络中相当大的频繁子路径。

      将首先回顾现有的图模式挖掘方法,并识别这些方法中的组合爆炸问题——图模式搜索空间随着模式大小呈指数增长。它导致两个严重的问题:(1)计算瓶颈,即算法需要很长时间,甚至永远完成挖掘过程;(2)模式的适用性,即巨大的挖掘结果集阻碍了算法的挖掘。

     图形模式在许多现实应用中的潜在用途。然后,我们将介绍可扩展的图模式挖掘范例。

2. Frequent Subgraph Mining

2.1 Problem Definition

  • 图的结构很简单,就是由顶点V集和边E集构成,因此图可以表示成:G=(V,E)。

  • 子图是一个图中的一部分,其可以表示为:

                                  

  • 子图模式:是用来提取图数据库中的频繁子结构的一种模式。子图关系可以表示为:G′⊆ sG。

 Definition 1 (Subgraph Isomorphism).

  

Definition 12.2 (Frequent Graph).    

如何判断某子图是频繁子图?

支持度:给定图的集族ς, 子图g的支持度定义为包含它的所有图所占的百分比。

有了支持度的定义就可以计算某子图在图集中的占比,如此便可来规定频繁子图。

                 

  • 例子:计算子图g1, g2, g3在如下图数据集中的支持度

对频繁子图的搜索与查找也就称之为频繁子图挖掘。频繁子图挖掘(frequent subgraph mining) :
给定集合 ς 和支持度阈值 minsup,频繁子图挖掘的目标是找出使得所有 s(G) ≥ minsup 的子图G。

目前常用的两种频繁子图挖掘的算法为 Apriori 与 gSpan
 

Definition 12.3 (Anti-Monotonicity).

    反单调性意味着只有当k size图的所有子图都是频繁的时,它才是频繁的。

2.2 Apriori-based Approach

      Apriori algorithm是关联规则里一项基本算法。由Rakesh Agrawal 在 1994年提出。

     基于 Apriori 的频繁子图挖掘算法与基于 Apriori 的频繁项集挖掘算法具有相似的特征。频繁子图的搜索从小尺寸子图开始,以自下而上的方式进行。在每次迭代中,新发现的频繁子图的大小增加一。这些新的子图是通过连接两个已经发现的相似但略有不同的频繁子图而生成的。然后检查新形成的图的频率。

   关联规则

  关联规则的目的在于在一个数据集中找出项之间的关系,也称之为购物篮分析 (market basketanalysis)。

   置信度:置信度表示了这条关联规则有多大程度上值得可信。

   置信度计算在A中,同时也含有B的概率,即Confidence(A==>B)=P(B|A)。

  支持度:支持度计算在所有的交易集中,既有A又有B的概率。 Support(A and B)=P(AB)

AGM 算法使用基于顶点的候选生成方法,在每次迭代中将子图大小增加一个顶点。仅当两个图具有相同的 size-k子图时,两个 size-(k+ 1) 频繁子图才会连接。这里,图大小是指图中的顶点数。新形成的候选包括公共尺寸-k子图和来自两个尺寸-(k+1)模式的附加两个顶点。

图 12.1 描述了由两条链连接的两个子图。 

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

             

       FSG算法采用基于边的候选生成策略,在每次迭代中将子图大小增加一条边。当且仅当两个大小为 (k+1) 的模式共享具有 k 边的相同子图时,它们才会被合并。在边不相交路径方法中,图根据它们具有的不相交路径的数量进行分类,如果两条路径不共享任何公共边,则它们是边不相交的。通过连接具有 k 不相交路径的子图来生成具有 k+1 不相交路径的子图模式。

顶点增长

通过添加一个新的结点到已经存在的一个频繁子图上来产生候选。可以使用邻接矩阵来表示图,每一项M(i, j)为链接vi和vj的的边或者0。

候选剪枝
候选剪枝需要剪去(k-1)子图非频繁的候选。可以通过以下方式实现:相继从 k 子图中删除一条边,并检查得到的(k-1) 子图是否连通且频繁。如果不是,则该候选 k 子图可以丢弃。意思是一次删除一条,总共有 k 个子图要检测。

为了检查(k-1)子图是否频繁,需要将其与其他的(k-1)子图匹配,此时需判定两个图是否拓扑等价,即处理图同构的问题。

如何处理图同构
处理图同构的问题的标准方法是,将每个图都映射到一个唯一的串表达式,称作代码或规范标号(canonical label)。如果两个图是同构的,则它们的代码一定相同。这个性质可以使得我们通过比较图的规范编号来检查图同构。
构造图的规范标号的步骤如下:
找出图的邻接矩阵表示。可利用矩阵中的基本矩阵进行行列互换。
确定每个邻接矩阵的串表示,由于邻接矩阵是串表示的,因此只需要根据矩阵的上三角阵部分构造串就足够了。
比较图的所有串表示,并选出具有最小(最大)字典序值的串,确保每个图的字符串唯一。
支持度计算
当我们剪枝完成之后,将剪枝后剩余的候选图进行支持度计算,将其中大于支持度阈值的候选图记为满足条件的频繁子图。

候选删除
对于所有频繁的候选子图,还需要进行图的同构测试,以减除重复的频繁候选子图。

类Apriori算法总结
类Apriori方法在每一层频繁子图的挖掘过程中,算法都会产生大量的非频繁的候选子图。
然后对候选的频繁子图执行支持度计数。
对于所有频繁的候选子图,还需要进行图的同构测试,以减除重复的频繁候选子图。
因为图的同构测试是一种NP完全问题,所以对于大规模的频繁子图进行图的同构测试是一个开销很大的过程,甚至是不可能完成的任务。
因此,大量生成的候选子图和图的同构测试的巨大开销是Apriori类方法的性能瓶颈。
 

2.3 Pattern-Growth Approach

      模式增长图挖掘算法包括 Yan 和 Han 的 gSpan 、Borgelt 和 Berthold 的 MoFa、Huan 等人的 FFSM,Huan 等人的 SPIN,以及 Nijssen 和 Kok 的 Gaston 。

     模式增长算法通过在每个可能的位置添加新边来直接扩展频繁图。它不执行昂贵的连接操作。边扩展的一个潜在问题是同一个图可能会被发现多次。 gSpan 算法通过引入最右扩展技术来帮助避免发现重复项,其中唯一的扩展发生在最右路径上。根据图上的深度优先搜索,给定图的最右侧路径是从起始顶点 v0 到最后一个顶点 vn 的直线路径。

     gSpan 算法设计出一种新式的图的规范标号,将图的同构测试与重复图的检测结合到一块,避免了在已经获得的频繁子图集合中搜索重复图。

gSpan最右路径扩展规则
  • 给定图G 和G 的DFS树T ,一条新边 e 可以添加到最右节点和最右路径上另一个节点之间(后向扩展).
  • 或者可以引进一个新的节点并且连接到最右路径上的节点(前向扩展)。
  • 由于这两种扩展都发生在最右路径上,因此称为最右扩展。

 gSpan算法步骤
1.遍历所有的图,计算出所有的边和点的频度。
2.将频度与最小支持度数做比较,移除不频繁的边和点。
3.重新将剩下的点和边按照频度进行排序,将他们的排名号给边和点进行重新标号。
4.再次计算每条边的频度,计算完后,然后初始化每条边,并且进行此边的subMining()挖掘过程。subMining过程如下:
   根据graphCode重新恢复当前的子图。
   判断当前的编码是否为最小DFS编码,如果是加入到结果集中,继续在此基础上尝试添加可能的      边,进行继续挖掘。
   如果不是最小编码,则此子图的挖掘过程结束。

gSpan算法小结
gSpan算法总的思想大致为,先生成频繁树,再在频繁树的基础上,生成频繁子图,满足最小支持度,满足最小DFS编码的所有频繁子图。

gSpan 算法通过执行最右扩展的策略减少了候选子图重复的产生,同时也保证了搜索结果的完备性。

gSpan 算法设计出一种新式的图的规范标号,将图的同构测试与重复图的检测结合到一块,避免了在已经获得的频繁子图集合中搜索重复图。
 

2.4 Closed and Maximal Subgraphs

     挖掘频繁子图的一个主要挑战是挖掘过程通常会生成大量模式。这是因为如果一个子图是频繁的,那么它的所有子图也是频繁的。具有 n 边的频繁图模式可能有 2^n 频繁子图,这是一个指数数。为了克服这个问题,提出了封闭子图挖掘和最大子图挖掘算法。

     Definition 12.4 (Closed Subgraph).

     子图 g 是图集 D中的闭子图,如果 g 在 D 中是频繁的,并且不存在适当的超图 g′ 使得 g ⊂ g′ 和 g′ 与 D中的 g 具有相同的支持度。

     Definition 12.5 (Maximal Subgraph).

     如果 g 是频繁的,并且不存在使得 g⊂ g' 和 g' 在 D中频繁出现的超图 g′,则子图 g 是图集 D 中的最大子图。

3. Mining Significant Graph Patterns
3.1 Problem Definitio

      给定一个图数据库 D = {G1, ..., Gn} 和一个目标函数 F,挖掘重要图模式的一般问题定义可以用两种不同的方式表示:(1)找到所有子图 g 使得 F( g) ≥ a,其中 a 是显着性阈值;或 (2) 找到一个子图 g* 使得 g* = argmaxF(g)。无论使用哪种公式或哪种目标函数,有效的挖掘算法都应该直接找到重要的模式,而无需详尽地生成整组图模式。提出了几种具有不同目标函数和剪枝技术的算法。我们将讨论最近的四项研究:gboost [19]、gPLS [25]、LEAP [31] 和 GraphSig [24]

3.2 gboost: A Branch-and-Bound Approach

       Kudo等人 [19]提出了Boosting的应用,用于对标记图(例如化合物、自然语言文本等)进行分类。称为决策树桩的弱分类器使用子图作为分类特征。然后,增强算法在加权训练实例上重复构建多个弱分类器。增益函数旨在评估决策树桩的质量,即可以正确分类多少个加权训练实例。那么每次迭代中寻找最优决策树桩的问题就被表述为挖掘“最优”子图模式。gboost基于增益函数设计了一种分支定界挖掘方法,并将其集成到gSpan中以搜索“最优”子图模式。

       算法 15 概述了用于搜索最佳图模式的分支定界框架。在初始化时,首先枚举所有具有一条边的子图,然后将这些种子图迭代扩展到大子图。由于同一个图可以以不同的方式增长,第 5 行检查它是否以前被发现过;如果有,则无需再次种植。迄今为止发现的最优 gain(〈ˆt, ˆy〉) 保持不变。如果 μ(t) ≤ gain(〈ˆt, ˆy〉),则可以安全地修剪t的分支。

       

3.3 gPLS: A Partial Least Squares Regression Approach

    一种基于偏最小二乘回归(PLS)的迭代挖掘方法。为了将 PLS 应用于图数据,首先开发了 PLS 的稀疏版本,然后将其与加权模式挖掘算法相结合。使用不同的权重向量迭代调用挖掘算法,每次挖掘调用都会创建一个潜在组件。分支定界搜索通过设计的增益函数和修剪条件集成到图挖掘中。从这个意义上说,gPLS 与 gboost 中的分支定界挖掘方法非常相似。

     

3.4 LEAP: A Structural Leap Search Approach

       Yan等人提出了一种有效的算法,可以挖掘相对于目标函数最重要的子图模式。这项研究的一个主要贡献是提出了一种使用非单调目标函数进行重要图模式挖掘的通用方法。称为 LEAP(降序跳跃挖掘)的挖掘策略探索了两个新的挖掘概念:(1)结构跳跃搜索和(2)频率递减挖掘,这两个概念都与模式搜索空间中的特定属性相关。相同的挖掘策略也可以应用于搜索其他更简单的结构,例如项集、序列和树。

                

Structural Leap Search. 

图 12.4 显示了子图模式的搜索空间。如果我们水平检查搜索结构,我们会发现沿相邻分支的子图可能具有相似的组成和频率,因此具有相似的客观分数。以分支퐴和퐵为例。假设 A 和 B 在公共子图模式 g上分割。分支 A 包含 g ⋄ e 的所有超图,而 B 包含除了 g ⋄ e 之外的 g 的所有超图。对于分支 B 中的图 g′,令分支 A 中的 g′′ = g′ ⋄ e。

LEAP 假设每个输入图都被分配了正标签或负标签(例如,对病毒有活性或无活性的化合物)。我们可以将图数据集分为两个子集:正集 D+ 和负集 D−。令 p(g) 和 q(g) 为图形模式 g 在正图和负图中的频率。对于子图模式 g,许多目标函数可以表示为 p和 q 的函数,如 F(g) = f(p(g), q(g))。

 根据结构邻近性,一旦搜索到附近的分支,跳过整个搜索分支似乎是合理的,因为相邻分支之间的最佳分数可能相似。在这里,我们要强调的是“可能”而不是“肯定”。基于这种直觉,如果图 12.4 中的分支 A 已被搜索,并且 A 和 B 分支满足某些相似性标准,那么 B 可以被“跳过”。跳跃的长度可以通过两个图g和g⋄e的频率差来控制。

结构跳跃搜索将生成最佳模式候选,并减少在模式搜索树中彻底搜索相似分支的需要。其目标是帮助程序搜索明显不同的分支,并限制丢失最重要模式的机会。

       

算法 17 概述了结构跳跃搜索 (sLeap) 的伪代码。第 7-8 行测试了跳跃条件。请注意,sLeap 不保证结果的最优性。

Frequency   Descending  Mining.

结构跳跃搜索利用结构相似性和显着性相似性之间的相关性。然而,它没有利用模式频率和模式客观分数之间可能的关系。现有的解决方案必须将频率阈值设置得非常低,以便不会错过最佳模式。不幸的是,低频阈值可能会生成大量低显着性冗余模式,且挖掘时间较长。

为了从频率关联中获益,提出了一种迭代频率下降挖掘方法。该方法不是以非常低的频率进行挖掘,而是以高频阈值\Theta = 1.0开始挖掘过程,计算出频率至少为\Theta的最优模式候选g*,然后反复降低\Theta以检查g*是否可以被挖掘。

它从最高频率阈值开始,然后降低阈值,直到最佳图形模式的客观分数收敛。第 5 行执行频繁子图挖掘例程 fpmine,可以是 FSG 、gSpan  等。fpmine 从它挖掘的频繁子图中选择最重要的图模式 g。第 6 行实现了一个简单的频率下降方法。 

通过结构跳跃搜索和频率递减挖掘,构建了通用挖掘管道,用于挖掘复杂图数据集中的重要图模式。它由以下三个步骤组成。

1.使用阈值 \Theta  = 1.0 执行结构跳跃搜索,生成最佳模式候选 g*。

2.重复频率递减挖掘和结构跳跃搜索,直到 g* 的目标分数收敛。

3.取迄今为止发现的最好成绩;再次执行结构跳跃搜索(跳跃长度\varrho),无需频率阈值;输出发现的模式。

3.5 GraphSig: A Feature Representation Approach

    Ranu 和 Singh [24] 提出了 GraphSig,这是一种基于图的特征向量表示来挖掘重要(通过 p 值测量)子图的可扩展方法。

第一步是将每个图转换为一组特征向量,其中每个向量代表图中的一个区域。

根据经验计算特征的先验概率,以评估特征空间中模式的统计显着性。

在特征空间中进行分析之后,仅访问指数搜索空间的一小部分以进行进一步分析。这使得能够使用现有的频繁子图挖掘技术以可扩展的方式挖掘重要模式,即使它们不频繁。

Sliding Window across Graphs.

         第一步,在图中的每个节点上执行带有重启的随机游走(缩写为 RWR),以模拟在图中滑动窗口。 RWR 模拟随机游走者的轨迹,从目标节点出发,从一个节点跳转到邻居节点。每个邻居都有相同的概率成为步行者的新站。每次跳转时,遍历的特征都会更新,可以是边标签或节点标签。重新启动概率使步行者在大约 1 次跳跃内回到起始节点。

         随机游走迭代直到特征分布收敛。结果,RWR 为每个节点生成连续的特征分布,其中特征值位于 [0, 1] 范围内,并进一步离散化为 10 个 bin。因此,RWR 可以可视化为在图的每个节点放置一个窗口并捕获其中子图的特征向量表示。节点图由特征向量表示。 RWR 本质上会考虑特征的接近度,并比简单地计算窗口内特征的出现次数保留更多的结构信息。

Calculating P-value of A Feature Vector.

      为了计算特征向量的 p 值,我们对特征向量 x 在由随机图表示的特征向量空间中的出现进行建模。向量的频率分布是使用凭经验获得的特征的先验概率生成的。给定一个特征向量 x = [x1, ..., xn],随机特征向量 y = [y1, ..., yn] 中出现 x 的概率可以表示为联合概率

                     

 Identifying Regions of Interest.  

     通过将图转换为特征向量,以及评估特征空间中图区域重要性的模型,下一步是探索如何分析特征向量以提取重要区域。基于特征向量表示,一组图中存在“公共”子特征向量就指向公共子图。类似地,不存在“公共”子特征向量表明不存在任何公共子特征向量子图。

 

      该算法首先将每个图转换为一组特征向量,并将所有向量放在一个集合 D′ 中(第 3-4 行)。 D' 被分为多个集合,使得 Da'  包含从标记为 a 的节点上的 RWR 生成的所有向量。在每个集合上,使用用户指定的支持度和 p 值阈值执行 FVMine 以检索重要子特征向量集(第 7 行)。考虑到每个子特征向量可以描述特定的子图,算法扫描数据库以识别当前子特征向量出现的区域。这涉及查找标记为 푎 并由特征向量描述的所有节点,使得该向量是当前子特征向量 v 的超向量(第 9 行)。

     然后,算法使用用户指定的半径(第 12 行)隔离以每个节点为中心的子图。这会为每个重要的子特征向量生成一组子图。接下来,使用高频阈值执行最大子图挖掘,因为预计集合中的所有图都包含公共子图(第 13 行)。最后一步还消除了误报,其中由于向量表示,不同的子图被分组为一组。由于不存在公共子图,当对集合进行频繁子图挖掘时,不会产生频繁子图,从而导致集合被过滤掉。

4. Conclusions

      频繁子图挖掘是图数据挖掘的基本任务之一。图数据固有的复杂性导致了组合爆炸问题。因此,挖掘算法可能需要很长时间甚至永远才能完成某些真实图数据集的挖掘过程。

      我们介绍了几种最先进的方法,这些方法可以挖掘一组紧凑的重要或代表性子图,而无需生成完整的图模式集。详细讨论了所提出的挖掘和修剪技术。这些方法大大降低了计算成本,同时增加了生成的图模式的适用性。这些研究成果在图挖掘研究方面取得了重大进展,并带来了一系列新的应用。

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值