讀《Finding and evaluating community structure in networks》Newman&Girvan

本文解決的問題是社團的發現,模型是傳統的圖模型,圖中節點代表實體,邊代表實體之間的聯繫。社團community沒有一個確切的定義,一般認爲社團應具有的特徵爲社團內部聯繫緊密,反映到圖中是一個邊稠密圖,社團之間聯繫鬆散,如果把一個社團當做一個節點的話,重新形成的圖是邊稀疏圖。

本文首先介紹了社團發現問題的2種基本思想,一是agglomerative methods,凝聚算法,這類方法從一個個孤立的節點開始,計算每兩個節點的相似度(按照一定的算法,本文沒有介紹),相似度高則這兩個節點在同一個社團。這種方法的問題在與社團中核心節點往往具有很高的相似度,但是邊緣節點則容易被忽略。另一種社團發現的思想是divisive methods,分裂算法,原始的輸入是一個完整的network,我們要做的是一步步刪除掉圖中的一些邊。這裏有兩個問題要解釋清楚:

Q1:爲什麼要刪除邊?

A1:刪除邊並不是要在真實的網絡中切斷節點之間的已存在的聯繫,而是爲了便於我們尋找圖中的社團,也就是屬於算法的一部分。

Q2:刪除哪些邊?

A2:不同的算法會有不同的方式,基於社團的重要特徵(社團內部聯繫緊密,社團之間聯繫鬆散),Newman提出刪除具有最大"betweenness"的邊。

Newman將‘betweenness’解釋爲連接社團之間(而不是社團內部)節點的度量。我們要做的是找到betweenness最大的邊,刪除它,直到找出所有community,這是一個循環迭代的過程。Newman提出3種計算betweenness的方法:1.找出網絡中每兩個節點之間的最短路徑,最短路徑會有重合的邊,那麼經過某條邊的最短路徑重合次數就代表它的betweenness,這種方法在直觀上是很容易理解的,比如2個相鄰的城市代表2個社團,城市之間有一條主幹道,那A城的節點(比如汽車)和B城的節點聯繫必然要經過這條道路。2和3方法一種是randomwalk betweenness,一種是current-flow betweenness,本質上是一樣的,相較於第一種方法,2,3複雜度大而且精確度低,Newman強烈建議使用第一種方法,如果對2,3方法有興趣的可以去閱讀這篇論文,在此不作詳細解釋。

這篇論文提出的基於刪除betweenness最大的邊的方法最重要的也是最關鍵的一點在於“recalculation step”,即每刪除一天betweenness最大的邊後,要重新計算剩下的圖的所有邊的betweenness,這確實是一個很需要計算量的過程,但也是該算法的精髓所在:能很大的提高結果的準確性。

接下來介紹計算between的算法,設某一節點爲s,計算s到其他所有節點的最短路徑,在一個節點之間最短路徑唯一的圖中,可以由路徑與節點形成一棵樹,與葉子節點相連的邊的betweenness爲1,其他的邊的betweenness等於所有與之直接相鄰的子邊的betweenness之和加1.結合betweenness的定義不難理解這一規則。更爲複雜的是節點之間最短路徑不唯一的情況,首先要計算節點的權重w。節點權重表示從s到該節點最短路徑的數目。

1.將起始節點s的w置爲1.

2.每個與s相鄰的節點的權重w也置爲1.

3.對於每一個與2中節點i相鄰的節點j,a)若j的權重未被設置,另w(j)=w(i)。b)若w(j)已經存在,另w(j)=w(i)+w(j) 。原算法中還加入距離d的判斷更加嚴謹。

計算得到每個節點的權重之後,計算每條邊的betweenness,自底向上,對最底層的節點:只有一條邊相連的點,該邊betweenness爲1,對於一個節點有多條邊相連,邊的betweenness置爲w(i)/w(j),其中i是上方的節點。對上層節點:其與更高一層節點連接的邊的betweenness等於所有與之直接相鄰的子邊的betweenness之和加1(如果該節點只有1個直接與之相連的上層節點),或等於所有與之直接相鄰的子邊的betweenness之和加1乘1/n(如果該節點有n個直接與之相連的上層節點),見下圖:


計算完所有邊的betweenness後刪除值最大的邊,之後需要重新計算剩下的圖中所有邊的betweenness。重複同樣的過程,接下里一個重要的問題是應該循環迭代多少次?或者說應該刪除多少條邊才能得到我們想要的社團集合?算法的每一次迭代都會產生一些劃分,如何評價這樣的劃分就是我們想要得到的社團呢?Newman接下來介紹社團評價的算法。第一種方法:設想一種劃分將原網絡劃分才成k個社團,構造一個k*k的對稱矩陣e,e(ij)代表從i社團的節點到j社團的節點的所有邊數。這樣e(ii)就代表i社團的所有內部邊數。我們希望這個矩陣的跡(即e(11)+e(22)+....)最大,代表了社團的內部聯繫最大,這是符合社團特徵的結果,可以作爲社團的評價條件。這種方法有缺陷,比如將整個網絡作爲一個社團,那自然e是最大的,但這顯然不代表整個網絡是一個社團。另一個方法是計算下圖中的Q,其中a(i)代表i行的所有值的和。注意,矩陣e的每一項值代表的是邊數佔所有邊數的比例。Q的值最終落在0到1之間,並且Q的值越大越好,越能代表真實的社團情況,至於原理,我也沒有弄懂這一部分。


最後,給出一個實驗驗證該算法的準確性。如下圖


可以看到,在Q最大的時候最能反映真實的社團情況。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章