子圖模式
頻繁子圖挖掘(frequent subgraph mining):在圖的集合中發現一組公共子結構。
圖和子圖
圖是一種用來表示實體集之間聯系的數據結構。
子圖,圖\(G' = (V', E')\)是另一個圖\(G = (V, E)\)的子圖,如果它的頂點集V'是V的子集,並且它的邊集E'是E的子集,子圖關系記做\(G' \subseteq s G\)。
支持度,給定圖的集族\(\varsigma\), 子圖\(g\)的支持度定義為包含它的所有圖所占的百分比。
頻繁子圖挖掘
頻繁子圖挖掘 給定集合\(\varsigma\)和支持度閾值\(minsup\),頻繁子圖挖掘的目標是找出使得所有\(s(g) \geq minsup\)的子圖\(g\).
該定義適用於所有類型的圖,但是本章主要關注無向連通圖(undirected,connected graph)。定義如下
- 一個圖是連通你的,如果圖中每對頂點之間都存在一條路徑。
- 一個圖是無向的,如果它只包含無向邊。
挖掘頻繁子圖的是計算量很大的任務,對於d個實體的數據集,子圖總數為
其中,\(C_d^i\)是選擇i個頂點形成的子圖方法數,\(2^{i(i-1)/2}\)是子圖的頂點之間邊的最大值。
候選的子圖很多,但不連通的子圖通常被忽略,因為它們沒有連通子圖令人感興趣。
頻繁子圖挖掘的一種蠻力方法是,產生所有連通子圖作為候選,並計算各自的支持度。候選子圖比傳統的候選項集的個數大得多的原因為
- 項在項集中之多出現一次,而某個標號可能在一個圖中出現多次。
- 相同的頂點標號對可以有多重邊標號選擇。
給定大量候選子圖,即使對於規模適應的圖,蠻力方法也可能垮掉
類Apriori方法
1.數據變換,一種方法是將圖變換為類似事務的形式,使得我們可以使用諸如Apriori等已有的算法。在這種情況下,邊標號和對應的頂點標號\((l(v_i), l(v_j))\)組合被映射到一個項。事務的寬度由圖的邊數決定。但是,只有當圖中每一條邊都具有唯一的頂點和邊標號組合時,該方法才可行。
2.頻繁子圖挖掘算法的一般結構
挖掘頻繁子圖的類Apriori算法由以下步驟組成,
- 候選產生:合並頻繁(k-1)-子圖對,得到候選k-子圖。
- 候選剪枝:丟棄包含非頻繁的(k-1)-子圖的所有候選k-子圖。
- 支持度計數:統計\(\varsigma\)中包含每個候選的圖的個數。
- 候選刪除:丟棄支持度小於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表求交集。最后,子圖同構檢查就在表中的圖上進行,確定它們是否包含特定的子圖。
數據挖掘之關聯分析一(基本概念)
數據挖掘之關聯分析二(頻繁項集的產生)
數據挖掘之關聯分析三(規則的產生)
數據挖掘之關聯分析四(連續屬性處理)
數據挖掘之關聯分析五(序列模式)
數據挖掘之關聯分析六(子圖模式)
數據挖掘之關聯分析七(非頻繁模式)