標籤傳播演算法(label propagation algorithm,lpa)是由zhu等人於2023年提出,它是一種基於圖的半監督學習方法,其基本思路是用已標記節點的標籤資訊去**未標記節點的標籤資訊。
lpa演算法思路簡單清晰,其基本過程如下:
(1)為每個節點隨機的指定乙個自己特有的標籤;
(2)逐輪重新整理所有節點的標籤,直到所有節點的標籤不再發生變化為止。對於每一輪重新整理,節點標籤的重新整理規則如下:
對於某乙個節點,考察其所有鄰居節點的標籤,並進行統計,將出現個數最多的那個標籤賦值給當前節點。當個數最多的標籤不唯一時,隨機選擇乙個標籤賦值給當前節點。
在標籤傳播演算法中,節點的標籤更新通常有同步更新和非同步更新兩種方法。同步更新是指,節點x在t時刻的更新是基於鄰接節點在t-1時刻的標籤。非同步更新是指,節點x在t時刻更新時,其部分鄰接節點是t時刻更新的標籤,還有部分的鄰接節點是t-1時刻更新的標籤。lpa演算法在標籤傳播過程中採用的是同步更新,研究者們發現同步更新應用在二分結構網路中,容易出現標籤**的現象。因此,之後的研究者大多採用非同步更新策略來避免這種現象的出現。
令( x1,y1) …( xl,yl) 是已標註資料,yl= ∈ 是類別標籤,類別數 c 已知,且均存在於標籤資料中。令( xl + 1,yl + 1) …( xl + u,yl + u) 為未標註資料,yu= 不可觀測,l << u,n=l+u。令資料集 x = ∈r。問題轉換為: 從資料集 x 中,利用yl的學習,為未標註資料集yu的每個資料找到對應的標籤。將所有資料作為節點( 包括已標註和未標註資料) ,建立乙個圖,這個圖的構建方法有很多,這裡我們假設這個圖是全連線的,節點i和節點j的邊權重為:
這裡,α是超參。還有個非常常用的圖構建方法是knn圖,也就是只保留每個節點的k近鄰權重,其他的為0,也就是不存在邊,因此是稀疏的相似矩陣。標籤傳播演算法非常簡單:通過節點之間的邊傳播label。邊的權重越大,表示兩個節點越相似,那麼label越容易傳播過去。我們定義乙個nxn的概率轉移矩陣p:
pij表示從節點i轉移到節點j的概率。我們將yl和yu合併,我們得到乙個nxc的soft label矩陣f=[yl;yu]。soft label的意思是,我們保留樣本i屬於每個類別的概率,而不是互斥性的,這個樣本以概率1只屬於乙個類。當然了,最後確定這個樣本i的類別的時候,是取max也就是概率最大的那個類作為它的類別的。那f裡面有個yu,它一開始是不知道的,那最開始的值是多少?無所謂,隨便設定乙個值就可以了。
簡單的lp演算法如下:
(1)執行傳播:f=pf;
(2)重置f中labeled樣本的標籤:fl=yl;
(3)重複步驟(1)和(2)直到f收斂。
步驟(1)就是將矩陣p和矩陣f相乘,這一步,每個節點都將自己的label以p確定的概率傳播給其他節點。如果兩個節點越相似(在歐式空間中距離越近),那麼對方的label就越容易被自己的label賦予。步驟(2)非常關鍵,因為labeled資料的label是事先確定的,它不能被帶跑,所以每次傳播完,它都得回歸它本來的label。
我們知道,我們每次迭代都是計算乙個soft label矩陣f=[yl;yu],但是yl是已知的,計算它沒有什麼用,在步驟(2)的時候,還得把它弄回來。我們關心的只是yu,那我們能不能只計算yu呢?我們將矩陣p做以下劃分:
令
,這時候,我們的演算法就乙個運算:
迭代上面這個步驟直到收斂就ok了。可以看到fu不但取決於labeled資料的標籤及其轉移概率,還取決了unlabeled資料的當前label和轉移概率。因此lp演算法能額外運用unlabeled資料的分布特點。
當n趨近於無窮大是,有
,其中是fu的初始值,因此我們需要證明
因為p是行標準化的,並且puu是p的子矩陣,所以
,因此當n趨近於無窮大時,rn=0,(puu)n收斂於0,也意味著
因此的初始值是無關緊要的,同時第n次迭代時fu收斂。
標籤傳播演算法
參考文獻 slpa speaker listener based information propagation algorithm 演算法引入了listener和speaker兩個形象化概念,在標籤更新過程中,待更新的節點我們稱為listener,該節點的領域節點我們稱為speaker,因為lis...
標籤傳播演算法(LPA)Python實現
標籤傳播演算法 lpa 的做法比較簡單 第一步 為所有節點指定乙個唯一的標籤 第二步 逐輪重新整理所有節點的標籤,直到達到收斂要求為止。對於每一輪重新整理,節點標籤重新整理的規則如下 對於某乙個節點,考察其所有鄰居節點的標籤,並進行統計,將出現個數最多的那個標籤賦給當前節點。當個數最多的標籤不唯一時...
基於標籤傳播演算法的社群發現
社群發現是一種廣義上的聚類,區別於傳統聚類的核心是類別與類別之間可以有重疊部分。在傳統的聚類演算法,如k means,乙個元素在結果中只能屬於乙個類別,但在社群發現演算法裡,乙個元素可以隸屬於不同的類別。這種聚類結果更貼近於生活中的場景,乙個人可以有多重屬性,不同的屬性特徵會驅使他歸到不同的類別裡。...