2017-04-04 51 views
3

我正在尝试构建一个有向图并在此图上计算个性化页面排名。因此,假设我有一个顶点{1,2,3,4}图和边缘会 2,3,4到顶点1,我想:使用python的networkX来计算个性化页面排名

(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〜几何(α)表示Pr [L = ] = (1−α) α。这个 行走从s开始,并在每一步执行以下操作:以概率α终止; 并且剩余概率1-α继续到当前节点的随机出站邻居。这里,如果当前节点是u,那么随机邻居v∈Nout(u)是以概率wu选择的 ,如果该图是加权的,或者如果图是未加权的,则具有统一的概率012/1/dout(u)。那么任何结点t的PPR是,这一走,停在t时的概率 :

发现本文第6页:https://cs.stanford.edu/people/plofgren/bidirectional_ppr_thesis.pdf

,所以我想我所期待的计算时的“个性化网页排名对于s而言,t是“如果我们根据上述过程从s开始随机游走,那么此步行在t终止的概率是多少。

+0

你必须解释你的意思是“个性化的......”在PageRank中,可以统一跳转到随机页面。 networkx中的“个性化”允许跳跃在不同页面上具有不同的着陆概率。在第一种情况下,所有页面的重量都是1,因此跳跃是统一的。在第二种情况下,所有页面的重量都是2,所以跳跃是统一的。所以两者都给出相同的结果(如果你根本没有分配权重,结果也是一样的)。 – Joel

+0

@Joel只是在问题中增加了更多信息。 – chibro2

回答

3

在PageRank的概念化中,随机冲浪者正在围绕以下链接移动。在每一步中,冲浪者都会有一个非零概率进入随机页面(而不是跟随链接)。如果随机页面的选择是加权的,那么它被称为个性化的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})