加权边缘如何影响networkx中的PageRank?

Posted

技术标签:

【中文标题】加权边缘如何影响networkx中的PageRank?【英文标题】:How do weighted edges affect PageRank in networkx? 【发布时间】:2012-02-26 12:52:37 【问题描述】:

我正在玩networkx(python中的图形库),我发现文档说PageRank算法在评分时会考虑边缘权重,但我想知道更大的边缘权重更好还是更低的权重更好?

【问题讨论】:

【参考方案1】:

简而言之,较大的权重对传入节点更好。

PageRank 适用于有向加权图。如果页面 A 有到页面 B 的链接,那么 B 的分数就会上升,即页面 B(节点)的输入越多,它的分数就越高。

Wikipedia article on PageRank 了解更多详情。

编辑:让我们做一个实验。创建一个有 3 个节点和两条权重相等的有向边的有向图。

import networkx as nx
D=nx.DiGraph()
D.add_weighted_edges_from([('A','B',0.5),('A','C',0.5)])
print nx.pagerank(D)

>> 'A': 0.259740259292235, 'C': 0.3701298703538825, 'B': 0.3701298703538825

现在,增加 (A,C) 边的权重:

D['A']['C']['weight']=1
print nx.pagerank(D)    

>> 'A': 0.259740259292235, 'C': 0.40692640737443164, 'B': 0.3333333333333333

如您所见,节点 C 随着传入边权重的增加得分更高。

【讨论】:

我不确定“PageRank 适用于有向加权图”是否正确。据我了解,PageRank 中使用的边通常没有加权,节点之间要么有边,要么没有。这是有道理的,因为你不能在两个页面之间有半个链接。虽然看起来 networkx 中的 pagerank 方法确实允许对边缘进行加权,就像它们可以使用基于 PageRank 的 TextRank(第 2.2 节)一样。 为什么要为链接分配更多权重?是否由实施来确定某些链接的价值如何? (比如正文中的链接与 cmets 中的链接?) @Xeoncross,加权链接的一个用例是在处理整个站点而不是单个页面时 - 在这种情况下,权重将是从一个站点到另一个站点的链接数。另一个例子是分析社交网络,其中权重可能与 Alice 发送给 Bob 的消息数量成正比。

以上是关于加权边缘如何影响networkx中的PageRank?的主要内容,如果未能解决你的问题,请参考以下文章

是否有可能让 networkx dijkstra 避免某些边缘?

如何更改节点大小和边缘权重 NetworkX?

标记外部节点,与networkx中的其他节点/边缘重叠最小

添加边缘权重以在 networkx 中绘制输出

Python networkx:边缘收缩

NetworkX DiGraph 边缘具有基于其初始节点的特定