本文主要是对Xifeng Yan和Jiawei Han 发表于2002年的论文《gSpan:Graph-Based Substructure Pattern Mining》的解读
子图模式:基于图的数据挖掘,挖掘图数据库中的频繁子结构
Introduction
2000,Inokuchi结合Apriori算法和数学图论知识,提出了AGM算法
2001,Kuramochi对AGM进行了修改并引入了一些剪枝策率,提出FSG算法
2002,Jiawei Han等人提出了gSpan算法,有效的挖掘出图数据集中的频繁连通子图
注:
连通图:无向图G,图中任意两个节点都存在路径可达,则图G称为连通图
Applications of Graph Patterns
节点表示个体,边表示个体之间的亲密属性
频繁子图挖掘的核心是图的同构测试
The Apriori-like algorithms suffer two additional cost:
(1)Costly subgraph isomorphism test
(2)Costly candidate generation
gSpan
不产生候选集,gSpan能够在图数据库中建立一个新的字典排序并且为每一个图赋予一个最小DFS码作为该图的规范标签(无向连通图)
大致过程:Each graph is assigned a unique minimum DFS code .Based on DFS codes,a hierarchical search tree is constructed.By pre-order traversal of the tree,gSpan discovers all frequent subgraphs with required support
图的同构测试
Preliminary Concepts
图同构:在两图的节点集合之间建立一个映射关系,G1两顶点对应的边和G2两顶点对应的边相同
f:保持了边的连接性以及顶点标签和边标签不变
(上面的五边形和五角星是同构图)
注:只能挖掘连同子图
Lexicographic Ordering in Graphs
最右路径在后面有详细介绍
DFS Tree 一个节点都有一个前沿,可以有多个后沿
DFS code:按DFS的发现顺序添加节点,与DFS中已存在的节点进行连接(按顺序进行连接),先添加前沿,再添加后沿。
DFS Code标签按照字典顺序进行比较得到Minimum DFS Code
Example
添加Gi 中互不相同的标签元组作为前向扩张,计算每条边的支持度,选出频繁一边图
生成候选子图C1,C2这里涉及到最优路径扩展,在下节详细描述。
最终结果
s4、s5是非频繁的
s9同构于s8是非频繁的
最右路径扩展
gSpan##实验
gSpan是一个频繁子图挖掘算法,这个程序使用Python实现了gSpan算法。
无向图频繁子图挖掘
数据集为论文中的Chemical Compound Dataset
部分实验结果: