天天看點

除了基于子產品度之外的其它社團檢測算法

一、子產品度的局限性

(1)判斷網絡是否具有較強的社團結構一種方法是把一個給定網絡與該網絡相應的随機化模型做對比。通常做法是通過随機重連方式生成許多具有相同度序列的随機化網絡,并計算這些網絡的子產品度的均值和方差,分别記為< Q > N M _{NM} NM​和 δ Q N M \delta_Q^{NM} δQNM​,然後計算給定網絡的最大子產品度Q m a x _{max} max​的統計重要性:

除了基于子產品度之外的其它社團檢測算法

如果Z Q _Q Q​>0,就可以認為網絡具有社團結構,并且Z Q _Q Q​越大就表明網絡的社團結構越強。但是問題來了:一些大家公認不具有較強社團結構的網絡也會具有較大的Z Q _Q Q​值;大家公認具有明顯社團結構的網絡卻具有很小的Z Q _Q Q​值。

(2)子產品度另一個更為重要的問題是分辨率限制:它無法識别出規模充分小的社團。

二、派系過濾算法

在上篇文章介紹的算法中,一個節點隻能被劃分到一個社團。然而大規模實際網絡的社團結構往往具有重疊性特征,即網絡中會存在一些”騎牆節點“,每一個騎強節點都會同時屬于多個社團。是以人們提出了一種派系過濾算法來分析具有重疊性的社團結構,并編制了相應軟體CFinder。

1、k-派系社團的定義

k-派系是網絡中包含k各節點的全耦合子圖,即這k個節點中任意兩個節點都有邊相連。如果兩個k-派系有k-1個公共節點那麼就稱這兩個k-派系是相鄰的。如果一個k-派系可以通過若幹個相鄰的k-派系到達另一個k-派系,就稱這倆個k-派系是彼此連通的。網絡中由所有彼此連通的k-派系構成的集合就稱為一個k-派系社團。下圖為4-派系社團。

除了基于子產品度之外的其它社團檢測算法

2、尋找網絡中的派系

在派系過濾算法中,采用由大到小、疊代回歸的算法來尋找網絡中的派系。首先,從網絡中各節點的度可以判斷網絡中可能存在的最大全耦合子圖的大小。從網絡中一個節點出發,找到所有包含該節點的大小為s的派系後,删除該節點以及與之相連的邊(以避免多次找到同一個派系)。然後,另選一個節點,重複上述步驟,直到網絡中沒有節點為止。至此,找到了網絡中大小為s的所有派系。接着,逐漸減小s,每次s值減小1,再用上述方法便可尋找到網絡中所有不同大小的派系。

這裡的關鍵是如何從一個節點v出發尋找包含它的所有大小為s的派系。為此,首先定義兩個集合A和B:集合A為包括節點v在内的兩兩相連的所有結點的集合。而集合B則為與集合A中各結點都相連的結點的集合。為了避免重複選到某個節點,對集合A和B中的節點都按節點序号順序排列。

尋找包含節點v的所有大小為s的派系的疊代回歸算法如下:

(1)初始集合A={v},B={v的鄰居};

(2)從集合B中移動一個節點到集合A,同時删除集合B中不在與集合A中所有節點相鄰的節點;

(3)如果在集合A的大小未達到s之前,集合B已為空集,或者集合A和B為已有的一個較大的派系中的子集,則停止計算,傳回上一步。否則,當集合A的大小達到s,就得到一個新的派系,記錄該派系,然後傳回上一步,繼續尋找包含節點v的新的派系。

3、利用派系尋找k-派系社團

找到網絡中所有的派系以後,就可以得到這些派系的重疊矩陣。該矩陣是一個對稱方針,每一行(列)對應于一個派系,對角線上的元素表示相應派系的大小(即派系所包含的節點數目)。在派系重疊矩陣中,将對角線上小于k而非對角線上小于k-1的元素置為0,其它元素置為1,就可以得到k-派系的社團結構鄰接矩陣,各個連通部分分别代表各個k-派系的社團。

三、連邊社團檢測算法

此算法的新思路是一個社團是一組緊密相連的連邊的集合,而不是通常定義的緊密相連的節點的集合。這樣定義的好處是一條邊隻能屬于一個社團。

連邊社團檢測算法的基本步驟就是把具有一定相似度的連邊合并為一個社團。此時需要給出連邊相似度的定量刻畫。假設初始時我們把網絡中的每一天邊都看作一個社團,現在要把其中的兩條邊合并為一個社團,一個自然的要求就是這兩條邊應該是連在一起的,即有一個公共節點。具有一個公共節點k的一對連邊e i k _{ik} ik​和e j k _{jk} jk​之間的相似度的合理定義就是考慮節點對i和j之間的相似度。

定義連邊對e i k _{ik} ik​和e j k _{jk} jk​之間的相似度如下:

除了基于子產品度之外的其它社團檢測算法

其中n + _+ +​(i)為節點i及其所有鄰居節點的集合。

除了基于子產品度之外的其它社團檢測算法

上圖連邊的相似度為4/12=1/3。

利用連邊的相似度定義,就可以用分級聚類方法來檢測網絡社團結構。具體步驟如下:

(1)計算網絡中所有相連的連邊對即至少擁有一個共同節點的連邊對的相似度,并根據相似度的值按降序排列這些連邊對。

(2)按排列次序依次将連邊對所屬社團進行合并,将合并過程以樹圖的形式記錄下來。這裡,如果一些連邊對具有相同的相似度,那麼就在同一步進行合并。

(3)社團的合并過程可進行到某一步為止,至多可進行到所有的連邊都屬于一個社團。

在上述操作過程中,兩個社團融合時所對應的相似度值稱為融合社團的強度,并對應于樹圖分支的高度。

為了得到最佳的社團結構,需要确定分割樹圖的最佳位置,或者等價的,确定社團合并過程進行到哪一步是最佳的。為此,基于社團内部的連邊密度定義一個目标函數,稱為劃分密度D。假設一個包含M條連邊的網絡被劃分為C個社團{P 1 _1 1​,P 2 _2 2​,,P c _c c​},其中社團P c _c c​包含m c _c c​條連邊和n c _c c​個節點,它所對應的歸一化密度定義為:

除了基于子產品度之外的其它社團檢測算法

其中n c _c c​-1是使得n c _c c​個節點構成連通圖所需的最少連邊數,而n c _c c​(n c _c c​-1)/2則是n c _c c​個節點之間最大可能的連邊數。這裡,如果n c _c c​=2,那麼定義D c _c c​=0。整個網絡的劃分密度就定義為D c _c c​的權重和:

除了基于子產品度之外的其它社團檢測算法

由于上式求和中的每一項都局限在社團内部,進而使得劃分密度避免了子產品度具有的分辨率限制問題。通過計算連邊樹圖每一層所對應的劃分密度或者直接優化劃分密度就可以得到最佳的社團劃分。

四、社團檢測算法的評價标準

1、基準圖方法

對于把社團檢測算法應用于實際網絡分析,算法的好壞取決于兩點:

(1)時間:算法能否早可接受的時間内給出社團劃分結果。

(2)性能:算法能否高品質地揭示出實際網絡的社團結構。

2、中繼資料方法

為了定量比較不同社團劃分算法的效果,可以引入以下幾個名額:

(1)社團品質:相似的節點應該共享盡可能多的中繼資料。

(2)重疊品質:對于網絡中的每個節點i,我們從中繼資料中提取一個标量(稱為重疊中繼資料),它對應于節點i所屬的真實社團的數目。

(3)社團覆寫: 計算屬于非平凡社團(即有3個或以上節點的社團)的節點所占的比例。

(4)重疊覆寫:計算每個節點所屬的非平凡社團的數目的平均值。兩個算法可能具有相同的社團覆寫度,但是一個算法有可能比另一個算法提取出更多的重疊節點。對于不具有檢測重疊性的社團算法,重疊覆寫度與社團覆寫度是一樣的。

繼續閱讀