1.LPA算法簡介
標簽傳播算法(Label Propagation Algorithm,LPA)是由Zhu等人於2002年提出,它是一種基於圖的半監督學習方法,其基本思路是用已標記節點的標簽信息去預測未標記節點的標簽信息。
LPA算法思路簡單清晰,其基本過程如下:
(1)為每個節點隨機的指定一個自己特有的標簽;
(2)逐輪刷新所有節點的標簽,直到所有節點的標簽不再發生變化為止。對於每一輪刷新,節點標簽的刷新規則如下:
對於某一個節點,考察其所有鄰居節點的標簽,並進行統計,將出現個數最多的那個標簽賦值給當前節點。當個數最多的標簽不唯一時,隨機選擇一個標簽賦值給當前節點。
在標簽傳播算法中,節點的標簽更新通常有同步更新和異步更新兩種方法。同步更新是指,節點x在t時刻的更新是基於鄰接節點在t-1時刻的標簽。異步更新是指,節點x在t時刻更新時,其部分鄰接節點是t時刻更新的標簽,還有部分的鄰接節點是t-1時刻更新的標簽。LPA算法在標簽傳播過程中采用的是同步更新,研究者們發現同步更新應用在二分結構網絡中,容易出現標簽震盪的現象。因此,之后的研究者大多采用異步更新策略來避免這種現象的出現。
2.LPA算法
2.1相似矩陣構建

2.2LPA算法
標簽傳播算法非常簡單:通過節點之間的邊傳播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。
2.3變身的LPA算法
我們知道,我們每次迭代都是計算一個soft label矩陣F=[YL;YU],但是YL是已知的,計算它沒有什么用,在步驟(2)的時候,還得把它弄回來。我們關心的只是YU,那我們能不能只計算YU呢?我們將矩陣P做以下划分:

這時候,我們的算法就一個運算:
迭代上面這個步驟直到收斂就ok了。可以看到fU不但取決於labeled數據的標簽及其轉移概率,還取決了unlabeled數據的當前label和轉移概率。因此LP算法能額外運用unlabeled數據的分布特點。
2.4收斂性證明
當n趨近於無窮大是,有
,
其中是fU的初始值,因此我們需要證明
因為P是行標准化的,並且PUU是P的子矩陣,所以
,
因此
當n趨近於無窮大時,rn=0,(PUU)n收斂於0,也意味着因此
的初始值是無關緊要的,同時第n次迭代時fU收斂。