How do weighted edges affect PageRank in networkx?

Question:

I’m playing around with networkx (graph library in python) and I found documentation saying the PageRank algorithm takes edge weights into account when scoring, but I was wondering if larger edge weights were better or lower weights better?

Asked By: Lostsoul

||

Answers:

Shortly, large weights are better for incoming nodes.

PageRank works on a directed weighted graph. If page A has a link to page B, then the score for B goes up, i.e. the more input the page B (node) have, the higher is its score.

Wikipedia article on PageRank for further details.

Edit: let’s make an experiment. Create a directed graph with 3 nodes and two directed edges with equal weights.

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}

Now, increase the weight of the (A,C) edge:

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

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

As you see, the node C got higher score with increasing weight of the incoming edge.

Answered By: Max Li

@jksnw PageRank can work on weighted networks. PageRank is used to determine the importance of nodes in a network. It does this by assigning all the nodes an "importance" value (default is usually 1) then each node iteratively gives away all its importance to its neighbors (nodes it is linked to). Each node does this and then new "importance" values are assigned and the process repeats until conversion. Have weighted links would just give more value to the links with higher weights.

Answered By: Nick