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

2021-09-29 02:51:58 字數 1529 閱讀 7451

社群發現是一種廣義上的聚類,區別於傳統聚類的核心是類別與類別之間可以有重疊部分。

在傳統的聚類演算法,如k-means,乙個元素在結果中只能屬於乙個類別,但在社群發現演算法裡,乙個元素可以隸屬於不同的類別。這種聚類結果更貼近於生活中的場景,乙個人可以有多重屬性,不同的屬性特徵會驅使他歸到不同的類別裡。

本文介紹一種實現社群發現的演算法,標籤傳播演算法。

slpa演算法是對標籤傳播演算法的改進。

基本原理

先了解一下輸入的資料:帶權無向圖

q:什麼是帶權無向圖?

a:圖是由節點和聯結構成,圖中的每個節點表示要聚類的目標,節點與節點之間的聯結都有乙個權重,權重值越大表示這兩個節點之間的聯絡越緊密,或節點之間的相似性更高。

在標籤傳播演算法裡每乙個節點既是 listener 又是 speaker,按照一定的規則進行「聽」和「說」的操作。

這些規則都要遵守乙個基本原則,就是傳播次數越多的訊息越有可能被再次傳播。就好比在人群中傳播乙個資訊,被說的最火熱和知道的人越多的訊息越容易擴散,越容易讓更多的人知道,人們也更願意去傳播它。

訊息傳播的過程就是演算法實現的過程,現在用乙個例子簡單說明一下。

假設有一群人,目標是想要把相似的人分到同乙個社群,這些相似的人或許有共同愛好,或許有共同特徵,不管怎麼定義,都可以用數值量化乙個權重,代表人與人之間的親密關係,權重越大說明兩個人越親密,越相似,越有可能進入到同乙個社群,而且乙個人可以隸屬於多個社群。

最初,每個人都會拿著乙個不同於別人的編號,這個編號就是最終所屬社群的編號,可以看成每個人都是乙個不同於別人的個體,隸屬於只有自己的小社群。

我們先把這個編號叫做「標籤」,每個標籤在最開始被賦予同乙個很小的數值,暫時叫它「機會值」,這個數值的意義是標籤被再次傳播的可能,數值越大越有可能被傳播。

隨機從乙個人開始,每人都扮演一次listener,listener的職責是準備乙個籃子,把所有和他相連的人傳給他的乙個標籤放到這個籃子裡,值得注意的是這些傳給他的標籤都會帶乙個機會值,機會值會在傳遞的路上把人與人之間的聯結權重加到自己身上。這個籃子會按照標籤為key,把同標籤的機會值相加,如果兩個人給listener傳遞了相同的標籤,籃子會自己把標籤的機會值加到一起。

最終,從籃子裡選出乙個機會值最大的標籤留在listener手中,記得還要保管好此時的機會值,如果手中已經有這個標籤,那就要把機會值相加,同時把籃子清空。

到此,listener的職責就完成了。中間還留了乙個小問題,那些和他相連的人都是speaker,speaker每次只能給listener傳遞乙個標籤,怎麼選擇呢,當然是選擇手中機會值最大的標籤傳給listener。

按照這個過程每當標籤被傳播一次,標籤就會把傳播路線上的權重值攬入囊中,加到自己的機會值上,這樣在下一次傳播時,被傳播次數多的標籤就會因為機會值大而成功搶占c位再次被傳播,所以符合一開始制定的傳播原則。

最終每個人手上都拿著傳遞後的標籤,可能是多個,這些標籤代表這個人隸屬於這些社群,這裡可以設定一些規則取捨掉一些無意義的社群分組,例如該社群內人數過多,或是這個社群編號的機會值很小等等。這些規則完全由目的主導。到此,基於標籤傳播演算法的社群發現就完成了。

社群發現演算法

簡單的lp演算法如下 執行傳播 f pf 重置f中labeled樣本的標籤 fl yl 重複步驟1和2直到f收斂 ps 步驟1就是將矩陣p和矩陣f相乘,這一步,每個節點都將自己的label以p確定的概率傳播給其他節點。如果兩個節點越相似 在歐式空間中距離越近 那麼對方的label就越容易被自己的la...

標籤傳播演算法

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

標籤傳播演算法

參考文獻 slpa speaker listener based information propagation algorithm 演算法引入了listener和speaker兩個形象化概念,在標籤更新過程中,待更新的節點我們稱為listener,該節點的領域節點我們稱為speaker,因為lis...