社區(qū)發(fā)現(xiàn)技術(shù)淺析
Part 01、社區(qū)發(fā)現(xiàn)簡介
復(fù)雜網(wǎng)絡(luò)是由大量的網(wǎng)絡(luò)節(jié)點(diǎn)以及節(jié)點(diǎn)之間錯(cuò)綜復(fù)雜的鏈接關(guān)系所形成的一種網(wǎng)絡(luò)結(jié)構(gòu)。生活中所接觸到的許多自然、科學(xué)、社會(huì)關(guān)系和基礎(chǔ)設(shè)施系統(tǒng)可以用復(fù)雜網(wǎng)絡(luò)建模表示,如電力系統(tǒng)、社交網(wǎng)絡(luò)、通信網(wǎng)絡(luò)、交通網(wǎng)絡(luò)等。用數(shù)學(xué)的語言來表述,復(fù)雜網(wǎng)絡(luò)就是一個(gè)有著足夠復(fù)雜的拓?fù)浣Y(jié)構(gòu)特征的圖。
圖1 各類復(fù)雜網(wǎng)絡(luò)將現(xiàn)代社會(huì)中的人與人、人與物相聯(lián)結(jié)
復(fù)雜網(wǎng)絡(luò)中總是能夠被進(jìn)一步劃分為各種各樣的社區(qū)。所謂社區(qū),就是一種網(wǎng)絡(luò)中特殊的子圖結(jié)構(gòu),在拓?fù)浣Y(jié)構(gòu)上表現(xiàn)為:社區(qū)成員內(nèi)部緊密連接,但與網(wǎng)絡(luò)其余部分的連接較為稀疏。社區(qū)發(fā)現(xiàn)算法能夠用于在復(fù)雜網(wǎng)絡(luò)中揭示社區(qū)結(jié)構(gòu),是一種能夠在微觀視角對(duì)網(wǎng)絡(luò)進(jìn)行分析的新穎工具。因此,目前各種互聯(lián)網(wǎng)企業(yè)中都廣泛使用社區(qū)發(fā)現(xiàn)算法輔助研究人員理解復(fù)雜網(wǎng)絡(luò)中的信息,在社交網(wǎng)絡(luò)分析、推薦系統(tǒng)、風(fēng)控等領(lǐng)域都能夠見到它的身影。無論是基于社交網(wǎng)絡(luò)數(shù)據(jù)的抖音用戶風(fēng)控、QQ/微博的好友推薦,還是基于真實(shí)世界數(shù)據(jù)的城市交通流量預(yù)測、電網(wǎng)負(fù)荷分析,這些應(yīng)用的背后都離不開社區(qū)發(fā)現(xiàn)算法的驅(qū)動(dòng)。
Part 02、常用社區(qū)發(fā)現(xiàn)技術(shù)
社區(qū)檢測是一個(gè)豐富且極具挑戰(zhàn)性的問題,部分原因是社區(qū)的定義仍然沒有明確的描述。在圖論中,社區(qū)被定義為不重疊的節(jié)點(diǎn)組,且組內(nèi)的邊連接遠(yuǎn)多于組間的邊。但是這個(gè)定義仍然留下了許多可能性,相應(yīng)地也有許多基于不同領(lǐng)域?qū)W說的計(jì)算方法被提出。
- 基于優(yōu)化的方法
最常見的是基于優(yōu)化的方法,貪婪算法、模擬退火算法、Louvain算法、PSO算法、進(jìn)化多目標(biāo)優(yōu)化算法等均屬于此類。一種典型的優(yōu)化方法首先需要建立一種社區(qū)質(zhì)量評(píng)分標(biāo)準(zhǔn),能夠通過判斷子圖結(jié)構(gòu)和社區(qū)定義的接近程度來分配對(duì)應(yīng)的分?jǐn)?shù);再利用貪婪/分布迭代等算法搜索網(wǎng)絡(luò)中每個(gè)可能的社區(qū)劃分,記錄并輸出得分最高的劃分結(jié)果。目前有眾多的社區(qū)質(zhì)量函數(shù)被提出,其中應(yīng)用最為廣泛的是模塊度(Modularity)質(zhì)量函數(shù),模塊度將社區(qū)評(píng)分定義為組內(nèi)邊的連接數(shù)量與隨機(jī)網(wǎng)絡(luò)中期望數(shù)量的差值。
- 基于統(tǒng)計(jì)推斷的方法
另一種在近年來引起了廣泛關(guān)注的方法是基于統(tǒng)計(jì)推斷的社區(qū)發(fā)現(xiàn)方法。這類方法將社區(qū)視為網(wǎng)絡(luò)結(jié)構(gòu)的主要驅(qū)動(dòng)因素,而非一種孤立的特征,認(rèn)為節(jié)點(diǎn)之間的連接概率與它們所屬的社團(tuán)是否相關(guān)有著密切聯(lián)系,類似于社交網(wǎng)絡(luò)中有相似興趣的人之間更容易產(chǎn)生鏈接。
通過利用隨機(jī)塊模型(SBM)等概率模型,基于統(tǒng)計(jì)推斷的方法能夠利用現(xiàn)有的社區(qū)劃分計(jì)算各節(jié)點(diǎn)間邊分布的概率,進(jìn)而重新生成圖的鏈接結(jié)構(gòu)。該方法認(rèn)為,若由這種方式重新生成的圖結(jié)構(gòu)和原始圖結(jié)構(gòu)的相似程度越高,則社區(qū)劃分的質(zhì)量越高。
- 基于隨機(jī)游走的方法
隨機(jī)游走可以通過在節(jié)點(diǎn)之間隨機(jī)跳轉(zhuǎn),獲得圖中節(jié)點(diǎn)與節(jié)點(diǎn)之間的共現(xiàn)關(guān)系,以檢測圖中的社區(qū)結(jié)構(gòu)。由于網(wǎng)絡(luò)社區(qū)之間通常只有稀疏的連接,跳轉(zhuǎn)到的節(jié)點(diǎn)往往處于同一社區(qū)的內(nèi)部,因此可以利用該方法自底向上地合并不同的節(jié)點(diǎn)組以生成社區(qū)。游走的關(guān)鍵在于下一跳節(jié)點(diǎn)的選擇,根據(jù)所應(yīng)用的場景和數(shù)據(jù)特征的不同,需要不同的策略進(jìn)行處理,常見的游走策略包括uniform、frequency、markov等。
這種方法的一個(gè)很好的特性是,我們不需要實(shí)際執(zhí)行任何隨機(jī)游走來計(jì)算信息:無限長的隨機(jī)游走會(huì)收斂到一個(gè)固定的概率值的熵的封閉表達(dá)式,我們可以直接使用它作為社區(qū)檢測的質(zhì)量函數(shù)。
上述方法所涉及的學(xué)科、領(lǐng)域各不相同。由于篇幅原因,這里節(jié)選出Louvain算法—— 一種基于優(yōu)化的社區(qū)發(fā)現(xiàn)方法來進(jìn)行相對(duì)詳細(xì)的學(xué)習(xí)。
Part 03、Louvain——基于模塊度最優(yōu)化的方法
上一節(jié)中提到,基于優(yōu)化的方法需要通過社區(qū)質(zhì)量函數(shù)來評(píng)估子圖結(jié)構(gòu)和社區(qū)定義的接近程度,而目前應(yīng)用最為廣泛的質(zhì)量函數(shù)是模塊度(Modularity),Louvain算法正是基于模塊度來進(jìn)行社區(qū)發(fā)現(xiàn)的。因此我們先對(duì)模塊度的定義進(jìn)行簡要介紹。
Newman等人提出了模塊度(modularity)的概念,用來衡量社區(qū)劃分的好壞,公式如下:
其中表示圖節(jié)點(diǎn)
和節(jié)點(diǎn)
之間邊的數(shù)目,
表示圖中邊的個(gè)數(shù),
表示節(jié)點(diǎn)
的度,
表示邊隨機(jī)放置的情況下,節(jié)點(diǎn)
和
之間邊數(shù)量的期望值。
因此可以將模塊度簡單理解為:在社區(qū)內(nèi)部的邊的比例,減去邊隨機(jī)放置時(shí)社區(qū)內(nèi)部期望邊數(shù)的比例,除以某個(gè)常數(shù)后所得到的值。如果一個(gè)社區(qū)劃分算法能夠盡可能多的將連接比較稠密的點(diǎn)劃分在相同社區(qū)中,而盡量減少社區(qū)之間的連接,這樣就能得到較高的模塊度評(píng)分。
可以通過下面的Python Demo簡單的計(jì)算網(wǎng)絡(luò)劃分的模塊度:
Louvain算法則是由Blondel等人提出的基于模塊度的社區(qū)發(fā)現(xiàn)算法。可以將整個(gè)算法分為兩個(gè)階段:
? 模塊度優(yōu)化階段——每個(gè)節(jié)點(diǎn)自身作為自己的社區(qū)標(biāo)簽,此時(shí)網(wǎng)絡(luò)中的社區(qū)數(shù)和結(jié)點(diǎn)數(shù)一致。計(jì)算此時(shí)圖劃分的模塊度作為基準(zhǔn),然后逐個(gè)嘗試改變圖中某一個(gè)節(jié)點(diǎn)的社區(qū)標(biāo)簽,將其更新成鄰居節(jié)點(diǎn)的社區(qū)標(biāo)簽,計(jì)算此時(shí)的模塊度與基準(zhǔn)值的差距,記為當(dāng)前劃分下的模塊度增量。選出能夠使得模塊度增量最大的網(wǎng)絡(luò)劃分。
? 網(wǎng)絡(luò)凝聚階段——將上個(gè)階段劃分出來的每個(gè)社區(qū)合并為一個(gè)新的超級(jí)節(jié)點(diǎn),節(jié)點(diǎn)的邊權(quán)重為原始社區(qū)中所有節(jié)點(diǎn)的邊權(quán)重之和,構(gòu)建一個(gè)新的網(wǎng)絡(luò)。
Louvain算法不斷在1,2兩個(gè)階段之間迭代,直到模塊度增量為負(fù)時(shí)停止;此時(shí)的社區(qū)劃分即為算法的輸出。
Part 04、展望
總的來說,CAT作為綜合性的平臺(tái),提供的監(jiān)控功能較為全面;Zipkin是由Twitter開源的調(diào)用鏈分析工具,非常輕量,使用部署簡單;Pinpoint和SkyWalking都專注于鏈路和性能監(jiān)控,追蹤數(shù)據(jù)粒度較細(xì)、用戶界面功能強(qiáng)大。隨著信息技術(shù)的發(fā)展和工業(yè)互聯(lián)網(wǎng)的廣泛應(yīng)用,生活中能夠接觸到的復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu)越來越多,比如交通網(wǎng)絡(luò)、金融網(wǎng)絡(luò)、通信網(wǎng)絡(luò)、輸電網(wǎng)絡(luò)等等。通過在后端對(duì)這些網(wǎng)絡(luò)中蘊(yùn)含的信息進(jìn)行分析預(yù)處理,為用戶提供更貼心、智能的服務(wù)成為了信息時(shí)代的新興增長點(diǎn)。作為國內(nèi)領(lǐng)先的電信運(yùn)營商,中國移動(dòng)必將能夠依靠廣泛且先進(jìn)的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,為城市服務(wù)數(shù)字化和智能化貢獻(xiàn)力量。
??參考文獻(xiàn)
[1] Fortunato S, Newman M E J. 20 years of network community detection[J]. Nature Physics, 2022: 1-3.
[2] Newman M E J, Girvan M. Finding and evaluating community structure in networks[J]. Physical review E, 2004, 69(2): 026113.
[3] Blondel V D, Guillaume J L, Lambiotte R, et al. Fast unfolding of communities in large networks[J]. Journal of statistical mechanics: theory and experiment, 2008, 2008(10): P10008.