simrank

时间:2024-05-01 11:16:25

simrank

背景

度量相似度是许多应用的关键问题。传统方法与问题的领域相关,如文本匹配、计算交集。simrank则利用关联关系度量相似性,即“两个节点的相似性和各自邻域节点的相似度有关”。

算法

simrank的核心公式:

simrank,并且simranksimrank时,

simrank

simrank,

simrank

simrank,或者simrank

simrank

通过多轮迭代,simrank可以收敛。

mapreduce实现

利用mapreduce,容易进行上述的迭代计算。

(1)初始状态:

相似度矩阵是单位阵:

simrank

邻接集合列simranksimrank

(2)每轮迭代

input:

a_b, s(a,b), x_a, x_b

其中,x_a表示所有与a邻接的节点,x_b表示所有与b邻接的节点,则任意的pairsimrank都需要累加s(a, b)

map:

分别遍历x_a, x_b,构成pair,输出

pair, s(a, b), I(px), I(p_y)

reduce:

累加s(a, b),得到pair的相似度