始める無料で始める

PageRank の変化

PageRank の式 \(\vec{PR}=\alpha \cdot A \cdot \vec{PR} + (1-\alpha)\cdot \vec{e}\) は、反復計算で \(\vec{PR}\) を求めることができます。各反復では、現在の \(\vec{PR}\) の値を使って、真の値により近い新しい値を計算します。つまり、連続する2回の反復で得られる \(\vec{PR}\) の差はだんだん小さくなり、やがて \(\vec{PR}\) が真の値に収束すると、その差は(ほぼ)ゼロになります。 この演習では、PageRank アルゴリズムの収束のしかたを確かめます。

この演習はコースの一部です

R で学ぶネットワークデータの予測分析

コースを見る

演習の手順

  • page.rank()network に対して使い、niter=1 を指定して PageRank アルゴリズムを1回反復で計算します。ベクトル属性を取り出し、結果を iter1 に代入します。
  • 同様に niter=2 で繰り返し、結果を iter2 に代入します。
  • ベクトル iter1iter2 の絶対差の合計を計算します。
  • iter1iter2 と同じ方法で iter9iter10 も計算済みです。これら2つの反復間の差は、反復1と2の差より小さくなっていますか。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Compute one iteration of PageRank 
iter1 <- page.rank(___, algo = 'power', options = list(niter = ___))$vector

# Compute two iterations of PageRank 
iter2 <- ___(___, algo = 'power', options = list(niter = ___))$vector

# Inspect the change between one and two iterations
sum(abs(___ - ___))

# Inspect the change between nine and ten iterations
sum(___(___ - ___))
コードを編集して実行