【问题标题】:Using python's networkX to compute personalized page rank使用 python 的 networkX 计算个性化页面排名
【发布时间】:2017-08-29 01:00:30
【问题描述】:

我正在尝试构建一个有向图并计算此图上的个性化页面排名。因此,假设我有一个图,其顶点为 {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∼几何(α)。这里 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

所以我想我在计算“t 相对于 s 的个性化页面排名”时要寻找的是,如果我们根据上述过程从 s 开始随机游走,那么这个游走终止于的概率是多少吨。

【问题讨论】:

  • 您必须解释“关于...的个性化”是什么意思 在 PageRank 中,可以统一跳转到随机页面。 networkx 中的personalization 允许该跳转具有不同的登陆不同页面的概率。在您的第一种情况下,所有页面的权重为 1,因此跳转是均匀的。在第二种情况下,所有页面的权重都为 2,因此跳转也是均匀的。所以两者都给出了相同的结果(如果你根本不分配权重,结果也是一样的)。
  • @Joel 刚刚添加了更多相关信息。

标签: python graph networkx pagerank


【解决方案1】:

在 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})

【讨论】:

  • Joel 和原始海报,到目标节点的过渡可以包含路径上的不同过渡。这种个性化是否意味着过渡总是到目标节点,还是意味着它将首先过渡到其他节点并最终在目标节点处停止?
  • 嗨 - 我不确定你的问题是什么。所以让我澄清一下算法。一个人通过网页随机跟踪链接。每隔一段时间,他/她不会点击链接,而是跳转到具有基于个性化权重的概率的页面。冲浪者从不停止。该算法会在很多很多步骤之后产生出现在每个页面的概率。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多