使用python';s networkX计算个性化页面排名
我试图构建一个有向图,并在这个图上计算个性化页面排名。假设我有一个顶点为使用python';s networkX计算个性化页面排名,python,graph,networkx,pagerank,Python,Graph,Networkx,Pagerank,我试图构建一个有向图,并在这个图上计算个性化页面排名。假设我有一个顶点为{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_e
{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∼ 几何(α)。我在这儿∼ 几何(α)我们的意思是Pr[L=]=(1−α)
a。这
walk从s开始,并在每一步执行以下操作:使用概率α,终止;
剩余概率为1− α、 继续随机选择一个
当前节点。这里,如果当前节点是u,则为随机邻居v∈ N out(u)是
如果图是加权图或均匀概率图,则选择概率wu,v
1/dout(u)如果图形未加权。那么任意节点t的PPR就是概率
这条路停在t:
可在本论文第6页找到:
因此,我假设我在计算“t相对于s的个性化页面排名”时所寻找的是,如果我们按照上述过程从s开始随机游动,那么游动在t终止的概率是多少 在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})
在PageRank中,你必须解释你所说的“关于……的个性化”是什么意思,有可能统一跳转到一个随机页面。networkx中的
个性化设置
允许跳转在不同页面上具有不同的登录概率。在第一种情况下,所有页面的权重为1,因此跳转是均匀的。在第二种情况下,所有页面的权重都为2,因此跳转也是均匀的。因此,两者都给出了相同的结果(如果你根本不指定权重,结果也会一样)。@Joel刚刚补充了更多的相关信息。