最近找了一下RWR算法的介紹,發現中文的blog全是互相抄的,講的不是很清楚。最后發現medium上面有個博文寫的還不錯,下面抄了一點。
https://medium.com/@chaitanya_bhatia/random-walk-with-restart-and-its-applications-f53d7c98cb9
問題描述
最基本的隨機游走:給定一個連接圖,以及圖中每個節點的轉移概率,目的就是找到從某個起點開始隨機走動,最終停在每個點的概率。
重啟隨機游走的區別就是在每次游走之后有一定概率回到起點。
先看一下公式:
的大小在0,1之間,
為轉移概率矩陣,
是從節點
到節點
的概率。
是起點向量,i為起點則
。r是終點向量。
下面來解釋這個公式
公式解釋
當e為起點,下次移動的落點為的概率可以用下面這個公式得到:
為
的第i行。所以如果沒有重啟機制的話,k次移動之后的落點為
的概率是:
如果有重啟機制就只能用遞推公式:
如果假定隨著移動次數增加,最終會收斂(事實也是如此),遞推公式就可以寫成最開始給出的那個公式:
解法
暴力一點就是迭代直到收斂。
或者求逆矩陣
得到
有啥用呢?
感覺基本上都是把落點概率作為一種相似度度量。
Image segmentation
圖像分割中,每個像素作為圖中的節點,轉移概率為像素之間的相似度,以某個像素為起點游走,落點概率高的可以作為一個cluster。
類似的應用還有Community detection, Recommender Systems等。