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

24

我正在使用Python中的网络图库networkx进行尝试,并发现文档说PageRank算法在评分时考虑了边权重,但我想知道更大的边权重是否更好还是更小的边权重更好?

1个回答

33

简而言之,对于入度节点来说,较大的权重更好。

PageRank是基于有向加权图工作的。如果页面A链接到页面B,则页面B的得分会增加,即页面B(节点)获得的输入越多,其得分就越高。

请参阅维基百科上关于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得分越高。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接