Zmiany w PageRank
Wzór PageRank \(\vec{PR}=\alpha \cdot A \cdot \vec{PR} + (1-\alpha)\cdot \vec{e}\) można rozwiązać iteracyjnie. W każdej iteracji bieżąca wartość \(\vec{PR}\) jest wykorzystywana do obliczenia nowej wartości, bliższej wartości prawdziwej. Oznacza to, że różnica między \(\vec{PR}\) kolejnych iteracji staje się coraz mniejsza, aż \(\vec{PR}\) zbiega do prawdziwej wartości, a różnica staje się (niemal) zerowa. W tym ćwiczeniu przyjrzysz się algorytmowi PageRank i temu, jakrzebyega jego zbieżność.
To ćwiczenie jest częścią kursu
Predykcyjna analityka sieciowa w R
Instrukcje do ćwiczenia
- Oblicz jedną iterację algorytmu PageRank, używając funkcji
page.rank()z argumentemnetworki wskazującniter=1. Wyodrębnij atrybut wektora i przypisz wynik do zmiennejiter1. - Powtórz poprzedni krok z
niter=2. Przypisz wynik do zmiennejiter2. - Oblicz sumę wartości bezwzględnych różnic między wektorami
iter1iiter2. - Zmienne
iter9iiter10zostały obliczone w taki sam sposób jakiter1iiter2. Czy różnica między tymi dwiema iteracjami jest mniejsza niż między iteracjami 1 i 2?
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(___(___ - ___))