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に代入します。 - ベクトル
iter1とiter2の絶対差の合計を計算します。 iter1とiter2と同じ方法でiter9とiter10も計算済みです。これら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(___(___ - ___))