重啟隨機游走算法Random Walk with Restart (RWR)

最近找了一下RWR算法的介紹,發現中文的blog全是互相抄的,講的不是很清楚。最后發現medium上面有個博文寫的還不錯,下面抄了一點。
https://medium.com/@chaitanya_bhatia/random-walk-with-restart-and-its-applications-f53d7c98cb9

問題描述

最基本的隨機游走:給定一個連接圖,以及圖中每個節點的轉移概率,目的就是找到從某個起點開始隨機走動,最終停在每個點的概率。
重啟隨機游走的區別就是在每次游走之后有一定概率回到起點。

先看一下公式:

r = cWr+ (1-c)e

c的大小在0,1之間,W為轉移概率矩陣,W_{ij}是從節點{i}到節點{j}的概率。e是起點向量,i為起點則e[i]=1。r是終點向量。
下面來解釋這個公式

公式解釋

當e為起點,下次移動的落點為i的概率可以用下面這個公式得到:

r_o[i] = e*W[i]

W[i]W的第i行。所以如果沒有重啟機制的話,k次移動之后的落點為i的概率是:

r_k[i] = W[i]^k*e = W[i]*r_{k-1}

如果有重啟機制就只能用遞推公式:

r_k[i] = c*W[i].r_{k-1} + (1-c)*e

如果假定隨著移動次數增加,r最終會收斂(事實也是如此),遞推公式就可以寫成最開始給出的那個公式:

r = cWr+ (1-c)e

解法

暴力一點就是迭代直到收斂。
或者求逆矩陣

(I — cW)r = (1-c)e

得到

r = (1-c)( I — cW)?1e

有啥用呢?

感覺基本上都是把落點概率作為一種相似度度量。
Image segmentation
圖像分割中,每個像素作為圖中的節點,轉移概率為像素之間的相似度,以某個像素為起點游走,落點概率高的可以作為一個cluster。
類似的應用還有Community detection, Recommender Systems等。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。