本文主要是對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
部分實驗結果: