除了基于模块度之外的其它社团检测算法
一、模塊度的局限性
(1)判斷網(wǎng)絡(luò)是否具有較強(qiáng)的社團(tuán)結(jié)構(gòu)一種方法是把一個(gè)給定網(wǎng)絡(luò)與該網(wǎng)絡(luò)相應(yīng)的隨機(jī)化模型做對(duì)比。通常做法是通過(guò)隨機(jī)重連方式生成許多具有相同度序列的隨機(jī)化網(wǎng)絡(luò),并計(jì)算這些網(wǎng)絡(luò)的模塊度的均值和方差,分別記為< Q >NM_{NM}NM?和δQNM\delta_Q^{NM}δQNM?,然后計(jì)算給定網(wǎng)絡(luò)的最大模塊度Qmax_{max}max?的統(tǒng)計(jì)重要性:
如果ZQ_QQ?>0,就可以認(rèn)為網(wǎng)絡(luò)具有社團(tuán)結(jié)構(gòu),并且ZQ_QQ?越大就表明網(wǎng)絡(luò)的社團(tuán)結(jié)構(gòu)越強(qiáng)。但是問(wèn)題來(lái)了:一些大家公認(rèn)不具有較強(qiáng)社團(tuán)結(jié)構(gòu)的網(wǎng)絡(luò)也會(huì)具有較大的ZQ_QQ?值;大家公認(rèn)具有明顯社團(tuán)結(jié)構(gòu)的網(wǎng)絡(luò)卻具有很小的ZQ_QQ?值。
(2)模塊度另一個(gè)更為重要的問(wèn)題是分辨率限制:它無(wú)法識(shí)別出規(guī)模充分小的社團(tuán)。
二、派系過(guò)濾算法
在上篇文章介紹的算法中,一個(gè)節(jié)點(diǎn)只能被劃分到一個(gè)社團(tuán)。然而大規(guī)模實(shí)際網(wǎng)絡(luò)的社團(tuán)結(jié)構(gòu)往往具有重疊性特征,即網(wǎng)絡(luò)中會(huì)存在一些”騎墻節(jié)點(diǎn)“,每一個(gè)騎強(qiáng)節(jié)點(diǎn)都會(huì)同時(shí)屬于多個(gè)社團(tuán)。所以人們提出了一種派系過(guò)濾算法來(lái)分析具有重疊性的社團(tuán)結(jié)構(gòu),并編制了相應(yīng)軟件CFinder。
1、k-派系社團(tuán)的定義
k-派系是網(wǎng)絡(luò)中包含k各節(jié)點(diǎn)的全耦合子圖,即這k個(gè)節(jié)點(diǎn)中任意兩個(gè)節(jié)點(diǎn)都有邊相連。如果兩個(gè)k-派系有k-1個(gè)公共節(jié)點(diǎn)那么就稱這兩個(gè)k-派系是相鄰的。如果一個(gè)k-派系可以通過(guò)若干個(gè)相鄰的k-派系到達(dá)另一個(gè)k-派系,就稱這倆個(gè)k-派系是彼此連通的。網(wǎng)絡(luò)中由所有彼此連通的k-派系構(gòu)成的集合就稱為一個(gè)k-派系社團(tuán)。下圖為4-派系社團(tuán)。
2、尋找網(wǎng)絡(luò)中的派系
在派系過(guò)濾算法中,采用由大到小、迭代回歸的算法來(lái)尋找網(wǎng)絡(luò)中的派系。首先,從網(wǎng)絡(luò)中各節(jié)點(diǎn)的度可以判斷網(wǎng)絡(luò)中可能存在的最大全耦合子圖的大小。從網(wǎng)絡(luò)中一個(gè)節(jié)點(diǎn)出發(fā),找到所有包含該節(jié)點(diǎn)的大小為s的派系后,刪除該節(jié)點(diǎn)以及與之相連的邊(以避免多次找到同一個(gè)派系)。然后,另選一個(gè)節(jié)點(diǎn),重復(fù)上述步驟,直到網(wǎng)絡(luò)中沒(méi)有節(jié)點(diǎn)為止。至此,找到了網(wǎng)絡(luò)中大小為s的所有派系。接著,逐步減小s,每次s值減小1,再用上述方法便可尋找到網(wǎng)絡(luò)中所有不同大小的派系。
這里的關(guān)鍵是如何從一個(gè)節(jié)點(diǎn)v出發(fā)尋找包含它的所有大小為s的派系。為此,首先定義兩個(gè)集合A和B:集合A為包括節(jié)點(diǎn)v在內(nèi)的兩兩相連的所有結(jié)點(diǎn)的集合。而集合B則為與集合A中各結(jié)點(diǎn)都相連的結(jié)點(diǎn)的集合。為了避免重復(fù)選到某個(gè)節(jié)點(diǎn),對(duì)集合A和B中的節(jié)點(diǎn)都按節(jié)點(diǎn)序號(hào)順序排列。
尋找包含節(jié)點(diǎn)v的所有大小為s的派系的迭代回歸算法如下:
(1)初始集合A={v},B={v的鄰居};
(2)從集合B中移動(dòng)一個(gè)節(jié)點(diǎn)到集合A,同時(shí)刪除集合B中不在與集合A中所有節(jié)點(diǎn)相鄰的節(jié)點(diǎn);
(3)如果在集合A的大小未達(dá)到s之前,集合B已為空集,或者集合A和B為已有的一個(gè)較大的派系中的子集,則停止計(jì)算,返回上一步。否則,當(dāng)集合A的大小達(dá)到s,就得到一個(gè)新的派系,記錄該派系,然后返回上一步,繼續(xù)尋找包含節(jié)點(diǎn)v的新的派系。
3、利用派系尋找k-派系社團(tuán)
找到網(wǎng)絡(luò)中所有的派系以后,就可以得到這些派系的重疊矩陣。該矩陣是一個(gè)對(duì)稱方針,每一行(列)對(duì)應(yīng)于一個(gè)派系,對(duì)角線上的元素表示相應(yīng)派系的大小(即派系所包含的節(jié)點(diǎn)數(shù)目)。在派系重疊矩陣中,將對(duì)角線上小于k而非對(duì)角線上小于k-1的元素置為0,其它元素置為1,就可以得到k-派系的社團(tuán)結(jié)構(gòu)鄰接矩陣,各個(gè)連通部分分別代表各個(gè)k-派系的社團(tuán)。
三、連邊社團(tuán)檢測(cè)算法
此算法的新思路是一個(gè)社團(tuán)是一組緊密相連的連邊的集合,而不是通常定義的緊密相連的節(jié)點(diǎn)的集合。這樣定義的好處是一條邊只能屬于一個(gè)社團(tuán)。
連邊社團(tuán)檢測(cè)算法的基本步驟就是把具有一定相似度的連邊合并為一個(gè)社團(tuán)。此時(shí)需要給出連邊相似度的定量刻畫(huà)。假設(shè)初始時(shí)我們把網(wǎng)絡(luò)中的每一天邊都看作一個(gè)社團(tuán),現(xiàn)在要把其中的兩條邊合并為一個(gè)社團(tuán),一個(gè)自然的要求就是這兩條邊應(yīng)該是連在一起的,即有一個(gè)公共節(jié)點(diǎn)。具有一個(gè)公共節(jié)點(diǎn)k的一對(duì)連邊eik_{ik}ik?和ejk_{jk}jk?之間的相似度的合理定義就是考慮節(jié)點(diǎn)對(duì)i和j之間的相似度。
定義連邊對(duì)eik_{ik}ik?和ejk_{jk}jk?之間的相似度如下:
其中n+_++?(i)為節(jié)點(diǎn)i及其所有鄰居節(jié)點(diǎn)的集合。
上圖連邊的相似度為4/12=1/3。
利用連邊的相似度定義,就可以用分級(jí)聚類方法來(lái)檢測(cè)網(wǎng)絡(luò)社團(tuán)結(jié)構(gòu)。具體步驟如下:
(1)計(jì)算網(wǎng)絡(luò)中所有相連的連邊對(duì)即至少擁有一個(gè)共同節(jié)點(diǎn)的連邊對(duì)的相似度,并根據(jù)相似度的值按降序排列這些連邊對(duì)。
(2)按排列次序依次將連邊對(duì)所屬社團(tuán)進(jìn)行合并,將合并過(guò)程以樹(shù)圖的形式記錄下來(lái)。這里,如果一些連邊對(duì)具有相同的相似度,那么就在同一步進(jìn)行合并。
(3)社團(tuán)的合并過(guò)程可進(jìn)行到某一步為止,至多可進(jìn)行到所有的連邊都屬于一個(gè)社團(tuán)。
在上述操作過(guò)程中,兩個(gè)社團(tuán)融合時(shí)所對(duì)應(yīng)的相似度值稱為融合社團(tuán)的強(qiáng)度,并對(duì)應(yīng)于樹(shù)圖分支的高度。
為了得到最佳的社團(tuán)結(jié)構(gòu),需要確定分割樹(shù)圖的最佳位置,或者等價(jià)的,確定社團(tuán)合并過(guò)程進(jìn)行到哪一步是最佳的。為此,基于社團(tuán)內(nèi)部的連邊密度定義一個(gè)目標(biāo)函數(shù),稱為劃分密度D。假設(shè)一個(gè)包含M條連邊的網(wǎng)絡(luò)被劃分為C個(gè)社團(tuán){P1_11?,P2_22?,,Pc_cc?},其中社團(tuán)Pc_cc?包含mc_cc?條連邊和nc_cc?個(gè)節(jié)點(diǎn),它所對(duì)應(yīng)的歸一化密度定義為:
其中nc_cc?-1是使得nc_cc?個(gè)節(jié)點(diǎn)構(gòu)成連通圖所需的最少連邊數(shù),而nc_cc?(nc_cc?-1)/2則是nc_cc?個(gè)節(jié)點(diǎn)之間最大可能的連邊數(shù)。這里,如果nc_cc?=2,那么定義Dc_cc?=0。整個(gè)網(wǎng)絡(luò)的劃分密度就定義為Dc_cc?的加權(quán)和:
由于上式求和中的每一項(xiàng)都局限在社團(tuán)內(nèi)部,從而使得劃分密度避免了模塊度具有的分辨率限制問(wèn)題。通過(guò)計(jì)算連邊樹(shù)圖每一層所對(duì)應(yīng)的劃分密度或者直接優(yōu)化劃分密度就可以得到最佳的社團(tuán)劃分。
四、社團(tuán)檢測(cè)算法的評(píng)價(jià)標(biāo)準(zhǔn)
1、基準(zhǔn)圖方法
對(duì)于把社團(tuán)檢測(cè)算法應(yīng)用于實(shí)際網(wǎng)絡(luò)分析,算法的好壞取決于兩點(diǎn):
(1)時(shí)間:算法能否早可接受的時(shí)間內(nèi)給出社團(tuán)劃分結(jié)果。
(2)性能:算法能否高質(zhì)量地揭示出實(shí)際網(wǎng)絡(luò)的社團(tuán)結(jié)構(gòu)。
2、元數(shù)據(jù)方法
為了定量比較不同社團(tuán)劃分算法的效果,可以引入以下幾個(gè)指標(biāo):
(1)社團(tuán)質(zhì)量:相似的節(jié)點(diǎn)應(yīng)該共享盡可能多的元數(shù)據(jù)。
(2)重疊質(zhì)量:對(duì)于網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)i,我們從元數(shù)據(jù)中提取一個(gè)標(biāo)量(稱為重疊元數(shù)據(jù)),它對(duì)應(yīng)于節(jié)點(diǎn)i所屬的真實(shí)社團(tuán)的數(shù)目。
(3)社團(tuán)覆蓋: 計(jì)算屬于非平凡社團(tuán)(即有3個(gè)或以上節(jié)點(diǎn)的社團(tuán))的節(jié)點(diǎn)所占的比例。
(4)重疊覆蓋:計(jì)算每個(gè)節(jié)點(diǎn)所屬的非平凡社團(tuán)的數(shù)目的平均值。兩個(gè)算法可能具有相同的社團(tuán)覆蓋度,但是一個(gè)算法有可能比另一個(gè)算法提取出更多的重疊節(jié)點(diǎn)。對(duì)于不具有檢測(cè)重疊性的社團(tuán)算法,重疊覆蓋度與社團(tuán)覆蓋度是一樣的。
總結(jié)
以上是生活随笔為你收集整理的除了基于模块度之外的其它社团检测算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于模块度的社团检测算法
- 下一篇: 无向网络节点重要性指标