Graph 在具有绝对权重的加权图上计算pagerank

Graph 在具有绝对权重的加权图上计算pagerank,graph,networkx,pagerank,stochastic,Graph,Networkx,Pagerank,Stochastic,我面临的问题与此链接()中表达的问题相同 本质上,我使用networkx计算图形上的pagerank。因为,pagerank计算首先将图形转换为右随机矩阵(所有输出边均归一化为一) 我需要的是一种不使边权重正常化的方法。因此,如果一个节点只有一个权重为0.1的传出边,而另一个节点只有一个权重为0.05的传出边,我希望在计算pagerank时使用此信息(而不是将每个节点归一化为1) 有人知道修改pagerank的正确方法是什么吗 提前感谢,, Amit也许你在想拉里和谢尔盖所谓的“个性化PageR

我面临的问题与此链接()中表达的问题相同

本质上,我使用networkx计算图形上的pagerank。因为,pagerank计算首先将图形转换为右随机矩阵(所有输出边均归一化为一)

我需要的是一种不使边权重正常化的方法。因此,如果一个节点只有一个权重为0.1的传出边,而另一个节点只有一个权重为0.05的传出边,我希望在计算pagerank时使用此信息(而不是将每个节点归一化为1)

有人知道修改pagerank的正确方法是什么吗

提前感谢,,
Amit

也许你在想拉里和谢尔盖所谓的“个性化PageRank”?可以在算法的随机跳跃部分调整节点的权重,以创建偏差。例如

In [1]: import networkx as nx

In [2]: G = nx.DiGraph()

In [3]: G.add_path([1,2,3,4])

In [4]: nx.pagerank_numpy(G)
Out[4]: 
{1: 0.11615582303660349,
 2: 0.2148882726177166,
 3: 0.29881085476166286,
 4: 0.370145049584017}

In [5]: nx.pagerank_numpy(G,personalization={1:1,2:10,3:1,4:1})
Out[5]: 
{1: 0.031484535189871404,
 2: 0.341607206810105,
 3: 0.3218506609784609,
 4: 0.3050575970215628}

例如,请参见此处的讨论

我有一个不完全随机的图(即边权重是绝对的,并且在节点之间是一致的)。我改变了networkx的pagerank实现,以避免将初始矩阵转换为正确的随机矩阵,从而给出正确的答案。然而,这意味着pagerank有时不会收敛,因为边的总和大于1,但通常在30-40次迭代后排名相当一致

从本质上讲,从networkx代码(algorithms/link\u analysis/pagerank\u alg.py)中删除这一行可以:-


W=x.Randomic_graph(D,weight=weight)

我尝试添加一个具有剩余边权重的虚拟节点,但pagerank无法收敛。嗨,Aric,谢谢你的帮助。我确实在使用个性化的pagerank来提升某些节点。然而,我面临的问题略有不同。我有一个不是完全随机的图(即边权重是绝对的,并且在节点之间是一致的)。我改变了networkx的pagerank实现,以避免将初始矩阵转换为正确的随机矩阵,从而给出正确的答案。然而,这意味着pagerank有时不会收敛,因为边的总和大于1,但通常在30-40次迭代后排名相当一致。