2017-04-04 18 views
3

を計算するためのpythonのnetworkXを使用します。だから私は、頂点1へ 2からを行く頂点{1,2,3,4}とエッジを持つグラフ、3、及び4があると、私はしたいと思います:私は有向グラフを構築し、このグラフ上のパーソナライズページランクを計算しようとしていますパーソナライズページランク

(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〜幾何学的(α)から始まるランダムウォークとする。ここで、L〜幾何学的(α)とは、Pr [L = ] = (1−α) α]を意味する。この walkはsから始まり、各ステップで次のことを行います。確率αで終了します。 残りの確率1 - α、 現在のノードのランダムアウトネイバーに続けます。グラフが重み付けされていないである場合、ここで現在のノードがUである場合、ランダム隣接V∈N OUT(U)確率ウーで選択 、グラフが重み付けされている場合、V又は均一な確率で 1/DOUT(U)です。そして、任意のノードtのPPRは、この散歩はトンで停止する確率 です:この論文の6ページが見つかり

https://cs.stanford.edu/people/plofgren/bidirectional_ppr_thesis.pdf

だから私は「パーソナライズページランクを計算するとき、私は探していますどのような仮定します上記のプロセスに従ってsからランダムな歩行を開始する場合、この歩行がtで終了する確率はどのくらいですか?ページランクの概念で

+0

あなたはランダムなページに一様にジャンプする可能性があるのPageRankで「へ...に関してパーソナライズ」によって何を意味するかを説明する必要があります。 networkxの「パーソナライゼーション」は、そのジャンプが異なるページで異なる着陸確率を持つことを可能にします。あなたの最初のケースでは、すべてのページの重みが1になるので、ジャンプは均一です。 2番目のケースでは、すべてのページの重みが2になるので、やはりジャンプは均一です。だから、両方とも同じ結果を返します(あなたがウェイトを全く割り当てなかった場合も同じ結果になります)。 – Joel

+0

@Joelが質問の詳細を追加しました。 – chibro2

答えて

3

、ランダムサーファーはリンク以下動き回っています。各ステップで、サーファーが(リンクをたどるのではなく)ランダムなページに行く確率はゼロではありません。そのランダムなページの選択が重み付けされている場合、パーソナライズされた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}) 
関連する問題