半監督學習演算法——標籤傳播演算法(LPA)與其擴充套件
標籤傳播演算法LPA與其擴充套件
1. 什麼是標籤傳播演算法?
標籤傳播演算法(Label Propagation Algorithm,LPA,2007)是基於圖的一種標籤演算法,也是社群發現(Community Detection)領域的一種經典方法。社群發現是為了發現圖中的一些社群結構,可以看作是聚類發現的問題,詳細發展和介紹在連結中。
- 社群發現的歷史:上世紀60年代,Herbert Simon 首先提出了複雜系統具有模組結構特性的概念。而針對社群的研究實際上是從子圖分割問題演化而來,Kernighan-Lin 提出的二分演算法使得子圖分割問題逐漸成為當時圖挖掘領域關注的重點。另外,在社會學領域,社會學家也發現社群結構在各種複雜網路中的普遍存在性。進入21世紀後,社群的研究開始被研究者所重視,而近年來隨著社交網路的崛起,這一領域的關注度已大大提升。
2. 標籤傳播演算法怎麼做?
核心思想: 利用該節點的周圍的節點的標籤(投票思想)來重新整理該節點的標籤,迴圈迭代直到收斂。
A. 標籤傳播演算法(LPA)的做法比較簡單:
-
第一步: 為所有節點指定一個唯一的標籤;
-
第二步: 逐輪重新整理所有節點的標籤,直到達到收斂要求為止。對於每一輪重新整理,節點標籤重新整理的規則如下:
對於某一個節點,考察其所有鄰居節點的標籤,並進行統計,將出現個數最多的那個標籤賦給當前節點。當個數最多的標籤不唯一時,隨機選一個。
注:演算法中的記號 N_n^k 表示節點 n 的鄰居中標籤為 k 的所有節點構成的集合。
B. “相似的資料應該具有相同的label。LP演算法包括兩大步驟:1)構造相似矩陣;2)勇敢的傳播吧。” LPA詳細過程與程式碼
3. LPA的擴充套件。
社群發現的已有演算法:
- 1.HANP(Hop Attenuation & Node Preference)
全稱包含兩個部分 跳躍衰減(HA)與節點偏好(NP):
(1)跳躍衰減:為每個節點引入score來刻畫其傳播能力。
(2)節點偏好:一個節點從其他節點接受標籤,與LPA不同,綜合考慮其傳播能力、出現頻率、度(如果是帶權圖還考慮邊權)。
- 2.SLPA(Speak-Listen Propagation Algorithm)
SLP是一個重疊型的社群發現演算法,可以通過閾值r讓其退化為非重疊性的社群發現演算法。
SLPA 中引入了 Listener 和 Speaker 兩個比較形象的概念,你可以這麼來理解:在重新整理節點標籤的過程中,任意選取一個節點作為 listener,則其所有鄰居節點就是它的 speaker 了,speaker 通常不止一個,一大群 speaker 在七嘴八舌時,listener 到底該聽誰的呢?這時我們就需要制定一個規則。
在 LPA 中,我們以出現次數最多的標籤來做決斷,其實這就是一種規則。只不過在 SLPA 框架裡,規則的選取比較多罷了(可以由使用者指定)。
當然,與 LPA 相比,SLPA 最大的特點在於:它會記錄每一個節點在重新整理迭代過程中的歷史標籤序列(例如迭代 T 次,則每個節點將儲存一個長度為 T 的序列,如上圖所示),當迭代停止後,對每一個節點歷史標籤序列中各(互異)標籤出現的頻率做統計,按照某一給定的閥值過濾掉那些出現頻率小的標籤,剩下的即為該節點的標籤(通常有多個)。
- 3.BMLPA (Balanced Multi-Label Propagation Algorithm)
對每個節點的歸屬community不做限制,只要求同一節點的標籤具有平衡的歸屬係數。