參考文獻: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值、標簽出現頻率、標簽的度等)
標簽更新規則:
BMLPA算法主要思想:
提出平衡歸屬系數概念,即對於每個節點其歸屬的社區數不限,但對同一節點的標簽局域平衡歸屬系數。
標簽更新:待更新標簽的領域標簽均由一個二元組序列與之對應,二元組的第一項表示標簽類別,第二項表示節點屬於該類別的隸屬度,對於每個節點,所有隸屬的之和為1。
①按照類別統計所有領域中的節點標簽和隸屬度,得到領域中的所有標簽,和標簽對應的隸屬的之和。
②歸一化A:將統計后的標簽-隸屬度序列中對大隸屬度值除以所有標簽的隸屬度,得出一組隸屬度最大值為1的標簽-隸屬度序列。
③篩選:將標簽-隸屬度序列中小於閾值ρ的標簽剔除出去。
④標簽更新:歸一化B,為了保證最后得到標簽-隸屬度序列中所有隸屬度和為一,將所以標簽的隸屬度除以所有標簽隸屬度之和。最后把得到標簽-隸屬度二元組賦值給待更新的標簽。
Fast Unfolding算法
該算法是一種基於modularity optimization的啟發式方法。
算法步驟,主要分成兩個步驟:
①首先把每個節點賦予一個唯一的社區,然后對所有的節點依次實行聚合,將待聚合的節點找到其所有的領域,依次把該節點聚合到領域節點中,計算modularity值,將節點最終聚合到modularity值最大的那個鄰居節點中,反復迭代,直到所有節點都不能改善modularity值為止。
②將第一階段生成的社區網絡中的所有社區看成“節點”,因為新“節點”中包含多個節點,所有兩個“節點”間需要有權重,權重采用兩個社區間個邊的權重總和。
DCLP(Distance-Control Label Propagation)算法,由HANP算法簡化而來,只考慮標簽傳播過程中的衰減因素,並使用距離dis_allowed代替δ,通過該參數可以有效控制標簽的傳播范圍。
AM-DCLP算法對原圖進行DCLP算法運算,但得到的某些社區規模較大時,則將它們對應的子圖再繼續執行DCLP算法。
兩個控制參數:
maxC_allowed:社區規模的最大值
break_down_allowed:允許調用DCLP算法的基數
SDCLP算法:每次DCLP算法迭代后,對所有的社區進行檢測,若社區的規模足夠大,則終止迭代,否則繼續迭代。
優點:及時的終止可以有效的防止大社區的出現,同時過小的社區通過迭代可以得到有利的發展。