標籤傳播演算法

2022-07-22 12:45:18 字數 1804 閱讀 9588

參考文獻: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演算法迭代後,對所有的社群進行檢測,若社群的規模足夠大,則終止迭代,否則繼續迭代。

優點:及時的終止可以有效的防止大社群的出現,同時過小的社群通過迭代可以得到有利的發展。

標籤傳播演算法

標籤傳播演算法 label propagation algorithm,lpa 是由zhu等人於2002年提出,它是一種基於圖的半監督學習方法,其基本思路是用已標記節點的標籤資訊去 未標記節點的標籤資訊。lpa演算法思路簡單清晰,其基本過程如下 1 為每個節點隨機的指定乙個自己特有的標籤 2 逐輪重...

標籤傳播演算法(LPA)Python實現

標籤傳播演算法 lpa 的做法比較簡單 第一步 為所有節點指定乙個唯一的標籤 第二步 逐輪重新整理所有節點的標籤,直到達到收斂要求為止。對於每一輪重新整理,節點標籤重新整理的規則如下 對於某乙個節點,考察其所有鄰居節點的標籤,並進行統計,將出現個數最多的那個標籤賦給當前節點。當個數最多的標籤不唯一時...

基於標籤傳播演算法的社群發現

社群發現是一種廣義上的聚類,區別於傳統聚類的核心是類別與類別之間可以有重疊部分。在傳統的聚類演算法,如k means,乙個元素在結果中只能屬於乙個類別,但在社群發現演算法裡,乙個元素可以隸屬於不同的類別。這種聚類結果更貼近於生活中的場景,乙個人可以有多重屬性,不同的屬性特徵會驅使他歸到不同的類別裡。...