模塊度(Modularity)用來衡量一個社區的劃分是不是相對比較好的結果。一個相對好的結果在社區內部的節點相似度較高,而在社區外部節點的相似度較低。
全局模塊度
設Avw爲網絡的鄰接矩陣的一個元素,定義爲:
假設cv和cw分別表示點v和點w所在的兩個社區,社區內部的邊數和網絡中總邊數的比例:
函數δ(cv,cw)的取值定義爲:如果v和w在一個社區,即cv=cw,則爲 1,否則爲 0。m 爲網絡中邊的總數。
模塊度的大小定義爲社區內部的總邊數和網絡中總邊數的比例減去一個期望值,該期望值是將網絡設定爲隨機網絡時同樣的社區分配所形成的社區內部的總邊數和網絡中總邊數的比例的大小,於是模塊度Q爲:
其中kv表示點v的度。
設eij表示社區i和社區j內部邊數目的和與總邊數的比例,ai表示社區i內部的點所關聯的所有的邊的數目與總邊數的比例。
爲了簡化Q的計算,假設網絡已經劃分成n個社區,這個時候就有一個 n維矩陣,Q 的計算可以變成:
在進行每次劃分的時候計算Q值,Q取值最大的時候則是此網路較理想的劃分。Q值的範圍在0-1之間,Q值越大說明網絡劃分的社區結構準確度越高,在實際的網絡分析中,Q值的最高點一般出現在0.3-0.7之間。
局部模塊度
有時候,可能不知道全網絡的數據,可以用局部社區的局部模塊度的方式來檢查社區的合理性。假設有一個已經檢測出來的社區,社區的節點的集合爲V,這些節點所有的鄰接節點而加入到集合當中來,形成新的集合V*。定義V*的鄰接矩陣爲:
於是,和全局模塊度相似的是,可以用節點集V*全部屬於節點集V中的元素所佔的比例的大小來衡量一個社區的好壞:
其中,δ(i,j)表示的是如果i,j都是V中則值爲1,否則爲0。m*表示的是鄰接矩陣內邊的數目。
局部模塊度比全局模塊度要快的多,因爲局部模塊度的計算只需要用到局部的網絡信息,只需要在剛剛開始的時候掃描一下整個網絡。對於中小規模的網絡可能局部模塊度的效果要低於全局模塊度,但是而且對於中等或者大規模的社會網絡來說,局部模塊度的效果可能還要好一些。
參考資料:
Finding community structure in very large networks