數據挖掘之關聯分析六(子圖模式)

子圖模式

頻繁子圖挖掘(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表求交集。最後,子圖同構檢查就在表中的圖上進行,肯定它們是否包含特定的子圖。

數據挖掘之關聯分析一(基本概念)
數據挖掘之關聯分析二(頻繁項集的產生)
數據挖掘之關聯分析三(規則的產生)
數據挖掘之關聯分析四(連續屬性處理)
數據挖掘之關聯分析五(序列模式)
數據挖掘之關聯分析六(子圖模式)
數據挖掘之關聯分析七(非頻繁模式)

相關文章
相關標籤/搜索