2017-04-04 52 views
3

我正在嘗試構建一個有向圖並在此圖上計算個性化頁面排名。因此,假設我有一個頂點{1,2,3,4}圖和邊緣會 2,3,4到頂點1,我想:使用python的networkX來計算個性化頁面排名

(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〜幾何(α)表示Pr [L = ] = (1−α) α。這個 行走從s開始,並在每一步執行以下操作:以概率α終止; 並且剩餘概率1-α繼續到當前節點的隨機出站鄰居。這裏,如果當前節點是u,那麼隨機鄰居v∈Nout(u)是以概率wu選擇的 ,如果該圖是加權的,或者如果圖是未加權的,則具有統一的概率012/1/dout(u)。那麼任何結點t的PPR是,這一走,停在t時的概率 :

發現本文第6頁:https://cs.stanford.edu/people/plofgren/bidirectional_ppr_thesis.pdf

,所以我想我所期待的計算時的「個性化網頁排名對於s而言,t是「如果我們根據上述過程從s開始隨機遊走,那麼此步行在t終止的概率是多少。

+0

你必須解釋你的意思是「個性化的......」在PageRank中,可以統一跳轉到隨機頁面。 networkx中的「個性化」允許跳躍在不同頁面上具有不同的着陸概率。在第一種情況下,所有頁面的重量都是1,因此跳躍是統一的。在第二種情況下,所有頁面的重量都是2,所以跳躍是統一的。所以兩者都給出相同的結果(如果你根本沒有分配權重,結果也是一樣的)。 – Joel

+0

@Joel只是在問題中增加了更多信息。 – chibro2

回答

3

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