2014-10-19 73 views
0

我面臨的問題與此鏈接中表達的相同(Networkx PageRank - Equal Ranks with Different Weights)。在絕對權重的加權圖上計算網頁排名

本質上,我使用networkx來計算圖上的PageRank。因爲,pagerank計算首先將圖轉換爲一個正確的隨機矩陣(所有出去的邊歸一化爲一)。

我需要的是一種不標準化邊緣權重的方法。所以,如果一個節點只有一個權重爲0.1的傳出邊,而另一個節點只有一個權重爲0.05的傳出邊,我希望這個信息用於pagerank的計算(而不是每個歸一化爲1)。

有誰知道什麼可能是正確的方式來修改pagerank來實現這一目標。

在此先感謝, 阿米特

+0

我嘗試添加具有剩餘邊權重的虛擬節點,但是然後pagerank不會收斂。 – 2014-10-19 00:51:24

回答

-1

我有一個曲線圖,其是不正確的隨機(即邊緣權重是絕對和跨節點一致)。我改變了networkx的pagerank實現,以避免將初始矩陣轉換爲正確的隨機矩陣,從而給我正確的答案。然而,這意味着,pagerank並不像有時候邊界總數大於1那樣收斂,但是通常在30-40次迭代後排序是相當一致的。

在本質上,除去從networkx代碼這條線(算法/ link_analysis/pagerank_alg.py)做了工作: -

W = x.stochastic_graph(d,重量=重量)

2

也許你在想什麼Larry和Sergey稱爲 「個性化的PageRank」?您可以調整算法的隨機跳轉部分中的節點的權重以創建偏差。例如。

In [1]: import networkx as nx 

In [2]: G = nx.DiGraph() 

In [3]: G.add_path([1,2,3,4]) 

In [4]: nx.pagerank_numpy(G) 
Out[4]: 
{1: 0.11615582303660349, 
2: 0.2148882726177166, 
3: 0.29881085476166286, 
4: 0.370145049584017} 

In [5]: nx.pagerank_numpy(G,personalization={1:1,2:10,3:1,4:1}) 
Out[5]: 
{1: 0.031484535189871404, 
2: 0.341607206810105, 
3: 0.3218506609784609, 
4: 0.3050575970215628} 

見,例如,這裏的討論http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf

+0

嗨,Aric,謝謝你的幫助。我確實使用個性化的pagerank來增強某些節點。但是,我面臨的問題稍有不同。我有一個不正確的隨機圖(即邊的權重是絕對的並且在節點間一致)​​。我改變了networkx的pagerank實現,以避免將初始矩陣轉換爲正確的隨機矩陣,從而給我正確的答案。然而,這意味着,pagerank並不像有時候邊界總數大於1那樣收斂,但是通常在30-40次迭代後排序是相當一致的。 – 2014-10-21 15:18:20