使用 python 的 networkX 计算个性化页面排名

Using python's networkX to compute personalized page rank

我正在尝试构建一个有向图并计算该图上的个性化网页排名。所以假设我有一个顶点 {1,2,3,4} 和边 2、3 和 4 到顶点 1 的图,我想:

(1)计算每个顶点相对于1

的个性化页面排名

(2)计算每个顶点相对于2的个性化页面排名。

问题是我应该如何在个性化页面排名功能中传递这个选项。下面的代码似乎不符合我的要求:

import networkx as nx

G = nx.DiGraph()

[G.add_node(k) for k in [1,2,3,4]]
G.add_edge(2,1)
G.add_edge(3,1)
G.add_edge(4,1)


ppr1 = nx.pagerank(G,personalization={1:1, 2:1, 3:1, 4:1})
ppr2 = nx.pagerank(G,personalization={1:2, 2:2, 3:2, 4:2})

现在ppr1 == ppr2,尽管不应该是这样。

============================================= ===================== 更新。

针对下面的评论,我对个性化页面排名的理解来自以下几点:

一个等效的定义是随机游走的终端节点开始 从 s。设 (X0, X1, . . . , XL) 为从 X0 = s 开始的随机游走 L ∼ Geometric(α)。这里 L ∼ Geometric(α) 是指 Pr[L = ] = (1−α) α。这个 walk 从 s 开始,并在每一步执行以下操作:以概率 α 终止; 并以剩余概率 1 − α 继续到 当前节点。这里如果当前节点是 u,则随机邻居 v ∈ N out(u) 是 如果图形是加权的或以均匀概率选择,则以概率 wu,v 选择 1/dout(u) 如果图形未加权。则任意节点t的PPR为概率 这条路停在 t:

在这篇论文的第6页找到:https://cs.stanford.edu/people/plofgren/bidirectional_ppr_thesis.pdf

所以我想我在计算 "the personalized page rank of t with respect to s" 时要寻找的是,如果我们根据上述过程从 s 开始随机游走,那么这次游走在 t 处终止的概率是多少。

在 PageRank 的概念化中,随机冲浪者在 link 秒后移动。在每一步中,冲浪者进入随机页面的概率都非零(与跟随 link 相对)。如果该随机页面的选择是加权的,那么它被称为个性化的 PageRank。

在您的情况下,您希望跳转至单个特定页面。因此,您需要告诉它,当冲浪者跳跃而不是跟随边缘时,所有其他页面在这些步骤中被选中的概率为零。

ppr1 = nx.pagerank(G,personalization={1:1, 2:0, 3:0, 4:0})
ppr2 = nx.pagerank(G,personalization={1:0, 2:1, 3:0, 4:0})