社區發現算法(四)

標籤傳播算法基本思想是通過標記節點的標籤信息預測未標記節點的標籤情況。節點之間的標籤傳播主要依照標籤相似度進行,在傳播過程中,未標記的節點根據鄰接點的標籤情況來迭代更新自身的標籤信息,如果其鄰接點與其相似度越相近,則表示對其所標註的影響權值就越大,鄰接點的標籤就更容易進行傳播。


基於標籤傳播的非重疊社區發現算法LPA

LPA主要思想是起初每個節點擁有獨立的標籤,那麼網絡中有n不同標籤,每次迭代中對於每個節點將其標籤更改爲其鄰接點中出現次數最多的標籤,如果這樣的標籤有多個,則隨機選擇一個。通過迭代,直到每個節點的標籤與其鄰接點中出現次數最多的標籤相同,則達到穩定狀態,算法結束。此時具有相同標籤的節點即屬於同一個社區。

LPA算法執行步驟:

利用igraph,給出LPA的R代碼

> library('igraph')
> karate  <-  graph.famous("Zachary")
> community <- label.propagation.community(karate)
> modularity(community)
[1] 0.3717949
> membership(community)
 [1] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2
> plot(community,karate)



基於標籤傳播的重疊社區發現算法COPRA


LPA算法雖然有很多優勢,但無法發現重疊社區結構。對此,基於LPA算法,引入了新的標籤結構(c,b),其中,c表示社區標識符,b表示節點x在社區c中的從屬係數,且0≤b≤1。頂點x的所有從屬係數之和等於1,通過bt(c,b)表示迭代次數t時的頂點x對於社區c的從屬係數,N(x)表示頂點x的鄰接頂點集。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章