參考文獻:http://blog.csdn.net/cleverlzc/article/details/39494957
Gephi 是一款網絡分析領域的可視化處理軟件,能夠用於數據分析,連接分析,社交網絡分析等。
標籤傳播算法LPA(Label Propagation Algorithm)最先是針對社區發現問題提出時的一種解決方案。
主要優勢有:時間複雜度(近似線性),不須要事先知道社區數量。
主要算法流程:首先爲每一個節點設置惟一標籤,接着迭代依次更新各個節點,針對每一個節點,經過統計節點鄰居的標籤,選擇標籤數最多的標籤更新該節點,若是最多便籤數大於一,則從中隨機選擇一個標籤更新該節點,直到收斂爲止。
標籤傳播算法的節點標籤更新策略主要分紅兩種,一種是同步更新,另外一種是已不更新。
其中同步更新:在執行第t次迭代更新時,僅依賴第t-1次更新後的標籤集。
異步更新:在執行第t次迭代更新時,同時依賴t次迭代已經更新的標籤集以及在t-1更新但t次迭代 中將來的及更新的標籤集,異步更新策略更關心節點更新順序,因此在異步更新過程當中,節點的 更新順序採用隨機選取的方式。
LPA算法適用於非重疊社區發現,針對重疊社區的發現問題,學者提出了COPRA(Community Overlapping Propagation Algorithm)算法。該算法提出全部節點能夠同時屬於V個社區,V是我的爲設定的全局變量,很顯然v的選擇直接影響算法的效果,針對v的選擇須要足夠的先驗知識,在真實的社區網絡中,v的選擇不能很好的被控制。算法
SLPA(Speaker-listener based information propagation algorithm)算法引入了Listener和Speaker兩個形象化概念,在標籤更新過程當中,待更新的節點咱們稱爲Listener,該節點的領域節點咱們稱爲Speaker,由於Listener最終的標籤屬性是根據這些Speaker所決定的。
在LPA中,把局域節點中最多標籤數的標籤賦予該節點,但這是一種更新規則,在SLPA中有多重更新策略規則。
基本算法流程和LPA相同,不一樣點:在SLPA中爲每一個節點設置了一個歷史標籤隊列,該隊列記錄了t次迭代以來,該節點被賦予的標籤。直到迭代結束後,對每一個節點的歷史標籤隊列進行統計,標籤頻率超過一個給的的閾值ρ的全部標籤就是該節點所屬的多個社區。
SLPA算法中涉及一個重要參數ρ,若是ρ的取值爲1,則SLPA算法退化成非重疊社區。網絡
HANP(Hop Attenuation & Node Preference)算法,其基本思想爲:
①爲每一個標籤引入score值來對該標籤的傳播能力進行評價,score值隨着傳播距離的增長而減弱。
score衰減規則:
其中δ 表示衰減因子(hop attenuation),δ 等於0的時候中止傳播
②每一個節點經過領域節點更新標籤時的規則δ 根據豐富(會綜合考慮標籤的傳播能力score值、標籤出現頻率、標籤的度等)
標籤更新規則:app
BMLPA算法主要思想:
提出平衡歸屬係數概念,即對於每一個節點其歸屬的社區數不限,但對同一節點的標籤局域平衡歸屬係數。異步
標籤更新:待更新標籤的領域標籤均由一個二元組序列與之對應,二元組的第一項表示標籤類別,第二項表示節點屬於該類別的隸屬度,對於每一個節點,全部隸屬的之和爲1。
①按照類別統計全部領域中的節點標籤和隸屬度,獲得領域中的全部標籤,和標籤對應的隸屬的之和。
②歸一化A:將統計後的標籤-隸屬度序列中對大隸屬度值除以全部標籤的隸屬度,得出一組隸屬度最大值爲1的標籤-隸屬度序列。
③篩選:將標籤-隸屬度序列中小於閾值ρ的標籤剔除出去。
④標籤更新:歸一化B,爲了保證最後獲得標籤-隸屬度序列中全部隸屬度和爲一,將因此標籤的隸屬度除以全部標籤隸屬度之和。最後把獲得標籤-隸屬度二元組賦值給待更新的標籤。spa
Fast Unfolding算法
該算法是一種基於modularity optimization的啓發式方法。
算法步驟,主要分紅兩個步驟:
①首先把每一個節點賦予一個惟一的社區,而後對全部的節點依次實行聚合,將待聚合的節點找到其全部的領域,依次把該節點聚合到領域節點中,計算modularity值,將節點最終聚合到modularity值最大的那個鄰居節點中,反覆迭代,直到全部節點都不能改善modularity值爲止。
②將第一階段生成的社區網絡中的全部社區當作「節點」,由於新「節點」中包含多個節點,全部兩個「節點」間須要有權重,權重採用兩個社區間個邊的權重總和。.net
DCLP(Distance-Control Label Propagation)算法,由HANP算法簡化而來,只考慮標籤傳播過程當中的衰減因素,並使用距離dis_allowed代替δ,經過該參數能夠有效控制標籤的傳播範圍。
AM-DCLP算法對原圖進行DCLP算法運算,但獲得的某些社區規模較大時,則將它們對應的子圖再繼續執行DCLP算法。
兩個控制參數:
maxC_allowed:社區規模的最大值
break_down_allowed:容許調用DCLP算法的基數
SDCLP算法:每次DCLP算法迭代後,對全部的社區進行檢測,若社區的規模足夠大,則終止迭代,不然繼續迭代。
優勢:及時的終止能夠有效的防止大社區的出現,同時太小的社區經過迭代能夠獲得有利的發展。orm