Salta al contenuto
Note per Studenti Esercizio - PageRank di quattro pagine con teletrasporto e iterazione di potenza

Esercizio - PageRank di quattro pagine con teletrasporto e iterazione di potenza

Teoria: Passeggiate aleatorie - rovina del giocatore, 2-SAT e grafiPasseggiata sulla retta con barriere (rovina del giocatore): da i con N come traguardo, P(vittoria)=i/N e durata attesa i(N-i) se il gioco è equo; con p diverso da 1/2, P=(1-r^i)/(1-r^N), r=q/p. Il 2-SAT si risolve con una passeggiata randomizzata (flip di una variabile di una clausola violata): E[T] ≤ n^2 passi, quindi 2n^2 passi bastano con errore ≤ 1/2 (3-SAT: deriva contraria, esponenziale). Sul grafo la passeggiata ha π_v=d(v)/2m, tempo di ritorno 2m/d(v), tempo di copertura < 4m(n-1), da cui la connettività s-t in spazio logaritmico; PageRank è la stazionaria di una passeggiata con teletrasporto.Passeggiate aleatorie - rovina del giocatore, 2-SAT e grafi →; catene di Markov: Catene di Markov - matrice di transizione, classificazione degli stati e distribuzione stazionariaUna catena di Markov a tempo discreto e stati finiti è descritta da una matrice stocastica P: P(X_{n+1}=j | X_n=i)=P_ij, la legge al tempo n è π_0 P^n. Gli stati si classificano in classi comunicanti (irriducibilità), periodo (aperiodicità) e ricorrenza/transitorietà. Una distribuzione stazionaria soddisfa πP=π; per catene finite irriducibili esiste ed è unica, vale π_i=1/h_ii (h_ii = tempo medio di primo ritorno), e se la catena è anche aperiodica P^n converge a una matrice con tutte le righe uguali a π. Le catene reversibili (π_i P_ij = π_j P_ji) hanno stazionaria immediata.Catene di Markov - matrice di transizione, classificazione degli stati e distribuzione stazionaria →.

Testo. Quattro pagine con i link 1→2,31\to2,3; 2→32\to3; 3→13\to1; 4→1,34\to1,3 (nessuno punta a 44). Il navigatore casuale segue un link scelto a caso con probabilità α=0,85\alpha=0{,}85, altrimenti salta a una pagina uniforme.

  1. Scrivere la matrice di transizione PP senza salti e la matrice GG con i salti. Perché GG ha un'unica distribuzione stazionaria?
  2. Calcolare il PageRank risolvendo il sistema lineare.
  3. Perché la pagina 44 ha il PageRank più basso e quanto vale?
  4. Quanto converge l'iterazione di potenza da x0=(14,14,14,14)x_0=(\tfrac14,\tfrac14,\tfrac14,\tfrac14)? Quante iterazioni per un errore ≤10−6\le10^{-6}?
  5. Come cambia il risultato con α=0,5\alpha=0{,}5 e α=0,99\alpha=0{,}99?

Soluzione

1. Senza salti (Pij=1/d+(i)P_{ij}=1/d^+(i) se i→ji\to j): P=(01212000101000120120),G=0,85 P+0,154 11T=0,85 P+0,0375 11T.P=\begin{pmatrix}0&\tfrac12&\tfrac12&0\\0&0&1&0\\1&0&0&0\\\tfrac12&0&\tfrac12&0\end{pmatrix},\qquad G=0{,}85\,P+\frac{0{,}15}4\,\mathbf 1\mathbf 1^T=0{,}85\,P+0{,}0375\,\mathbf 1\mathbf 1^T. PP da sola non è irriducibile: la pagina 44 è transitoria (nessuno la raggiunge) e {1,2,3}\{1,2,3\} è una classe chiusa, quindi darebbe PR4=0\text{PR}_4=0 e dipenderebbe dalla struttura dei link. In GG ogni entrata è ≥0,0375>0\ge0{,}0375>0, quindi da ogni pagina si va in un passo a ogni altra: la catena è irriducibile e aperiodica, ed esiste un'unica π\pi con πG=π\pi G=\pi e π(n)→π\pi^{(n)}\to\pi.

2. Le equazioni sono xj=0,0375+0,85∑i→jxi/d+(i)x_j=0{,}0375+0{,}85\sum_{i\to j}x_i/d^+(i): x1=0,0375+0,85 (x3+12x4),x2=0,0375+0,85⋅12x1,x3=0,0375+0,85 (12x1+x2+12x4),x4=0,0375.x_1=0{,}0375+0{,}85\,(x_3+\tfrac12x_4),\quad x_2=0{,}0375+0{,}85\cdot\tfrac12x_1,\quad x_3=0{,}0375+0{,}85\,(\tfrac12x_1+x_2+\tfrac12x_4),\quad x_4=0{,}0375. Dalla quarta, x4=0,0375x_4=0{,}0375 e 0,85⋅12x4=0,01593750{,}85\cdot\tfrac12x_4=0{,}0159375. Allora:

  • x1=0,0534375+0,85x3x_1=0{,}0534375+0{,}85x_3;
  • x2=0,0375+0,425x1x_2=0{,}0375+0{,}425x_1;
  • x3=0,0534375+0,425x1+0,85x2=0,0534375+0,425x1+0,031875+0,36125x1=0,0853125+0,78625x1x_3=0{,}0534375+0{,}425x_1+0{,}85x_2=0{,}0534375+0{,}425x_1+0{,}031875+0{,}36125x_1=0{,}0853125+0{,}78625x_1.

Sostituendo x3x_3 in x1x_1: x1=0,0534375+0,072515625+0,6683125 x1=0,125953125+0,6683125 x1x_1=0{,}0534375+0{,}072515625+0{,}6683125\,x_1=0{,}125953125+0{,}6683125\,x_1, da cui x1=0,1259531250,3316875=0,3797x_1=\dfrac{0{,}125953125}{0{,}3316875}=0{,}3797. Poi x2=0,0375+0,425⋅0,3797=0,1989x_2=0{,}0375+0{,}425\cdot0{,}3797=0{,}1989 e x3=0,0853125+0,78625⋅0,3797=0,3839x_3=0{,}0853125+0{,}78625\cdot0{,}3797=0{,}3839. Controllo: 0,3797+0,1989+0,3839+0,0375=1,00000{,}3797+0{,}1989+0{,}3839+0{,}0375=1{,}0000 ✓. PR=(0,3797; 0,1989; 0,3839; 0,0375).\boxed{\text{PR}=(0{,}3797;\ 0{,}1989;\ 0{,}3839;\ 0{,}0375).} (Valori esatti: x1=26877076x_1=\tfrac{2687}{7076}, x2=56293283040x_2=\tfrac{56293}{283040}, x3=108653283040x_3=\tfrac{108653}{283040}, x4=380x_4=\tfrac3{80}.)

3. La pagina 44 non riceve link: l'unico modo di arrivarci è un salto casuale, che ha probabilità 1−αn=0,154=0,0375\tfrac{1-\alpha}n=\tfrac{0{,}15}4=0{,}0375 a ogni passo, quindi PR4=0,0375\text{PR}_4=0{,}0375 esattamente. Le pagine 33 e 11 si scambiano quasi tutto il peso (3→13\to1 con probabilità 11, e 11 manda metà del suo peso a 33 più tutto il contributo di 22): per questo sono prime e seconde. Nonostante 44 punti a 11 e 33, il suo contributo vale solo 0,85⋅0,0375/2=0,01590{,}85\cdot0{,}0375/2=0{,}0159 a ciascuna.

4. L'iterazione x(k+1)=x(k)Gx^{(k+1)}=x^{(k)}G converge con rapidità ∣λ2(G)∣k|\lambda_2(G)|^k. Gli autovalori di PP sono 11, −12±12i-\tfrac12\pm\tfrac12i (modulo 12=0,7071\tfrac1{\sqrt2}=0{,}7071) e 00, e quelli di GG diversi da 11 sono 0,850{,}85 volte quelli di PP: ∣λ2∣=0,85⋅0,7071=0,601|\lambda_2|=0{,}85\cdot0{,}7071=0{,}601. L'errore in norma L1L^1 vale (calcolato)

iterazione kk 1 2 3 4 5 10 20 30
∥x(k)−PR∥1\lVert x^{(k)}-\text{PR}\rVert_1 0,1570{,}157 0,1340{,}134 0,0970{,}097 0,0410{,}041 0,0210{,}021 2,3⋅10−32{,}3\cdot10^{-3} 1,2⋅10−51{,}2\cdot10^{-5} 8,6⋅10−88{,}6\cdot10^{-8}

Per un errore ≤10−6\le10^{-6} servono 25\boxed{25} iterazioni (1,55⋅10−61{,}55\cdot10^{-6} a k=24k=24, 7,8⋅10−77{,}8\cdot10^{-7} a k=25k=25). In pratica PR non è noto e ci si ferma quando la differenza fra due iterate consecutive è <10−6<10^{-6}: qui succede a k=28k=28, perché il passo ∥x(k+1)−x(k)∥1\lVert x^{(k+1)}-x^{(k)}\rVert_1 è più grande dell'errore residuo (con autovalori complessi l'errore oscilla), quindi il criterio pratico è più prudente di qualche iterazione.

5. Il numero di iterazioni cresce con α\alpha (autovalore α⋅0,7071\alpha\cdot0{,}7071), mentre i pesi diventano più "puri" (vicini alla stazionaria di PP nella classe {1,2,3}\{1,2,3\}):

α\alpha PR ∣λ2∣\lvert\lambda_2\rvert iterazioni per 10−610^{-6}
0,5 (0,327; 0,207; 0,341; 0,125)(0{,}327;\,0{,}207;\,0{,}341;\,0{,}125) 0,354 12
0,85 (0,380; 0,199; 0,384; 0,0375)(0{,}380;\,0{,}199;\,0{,}384;\,0{,}0375) 0,601 25
0,99 (0,399; 0,200; 0,399; 0,0025)(0{,}399;\,0{,}200;\,0{,}399;\,0{,}0025) 0,700 36

Con α=0,99\alpha=0{,}99 la pagina 44 scende a 0,00250{,}0025 (si tende alla stazionaria di PP, dove 44 ha peso 00) ma la convergenza è più lenta. È il compromesso scelto in pratica: α=0,85\alpha=0{,}85.

Codice di verifica

python
import numpy as np

L = {0: [1, 2], 1: [2], 2: [0], 3: [0, 2]}                 # pagine 1..4 come indici 0..3
P = np.zeros((4, 4))
for i, out in L.items():
    P[i, out] = 1 / len(out)

def pagerank(alpha, tol=1e-6):
    G = alpha * P + (1 - alpha) / 4 * np.ones((4, 4))
    w, v = np.linalg.eig(G.T)
    pr = np.real(v[:, np.argmax(np.real(w))]); pr /= pr.sum()          # stazionaria esatta
    x, k = np.ones(4) / 4, 0
    while np.abs(x - pr).sum() > tol:
        x, k = x @ G, k + 1                                          # iterazione di potenza
    return pr, k, np.sort(np.abs(w))[-2]

for a in (0.5, 0.85, 0.99):
    pr, k, l2 = pagerank(a)
    print(a, np.round(pr, 4), "iterazioni:", k, " |lambda2| =", round(l2, 3))

Output:

0.5 [0.3269 0.2067 0.3413 0.125 ] iterazioni: 12  |lambda2| = 0.354
0.85 [0.3797 0.1989 0.3839 0.0375] iterazioni: 25  |lambda2| = 0.601
0.99 [0.3987 0.1999 0.3989 0.0025] iterazioni: 36  |lambda2| = 0.7

Versione ripasso

Teoria: Passeggiate aleatorie - rovina del giocatore, 2-SAT e grafiPasseggiata sulla retta con barriere (rovina del giocatore): da i con N come traguardo, P(vittoria)=i/N e durata attesa i(N-i) se il gioco è equo; con p diverso da 1/2, P=(1-r^i)/(1-r^N), r=q/p. Il 2-SAT si risolve con una passeggiata randomizzata (flip di una variabile di una clausola violata): E[T] ≤ n^2 passi, quindi 2n^2 passi bastano con errore ≤ 1/2 (3-SAT: deriva contraria, esponenziale). Sul grafo la passeggiata ha π_v=d(v)/2m, tempo di ritorno 2m/d(v), tempo di copertura < 4m(n-1), da cui la connettività s-t in spazio logaritmico; PageRank è la stazionaria di una passeggiata con teletrasporto.Passeggiate aleatorie - rovina del giocatore, 2-SAT e grafi →; Catene di Markov - matrice di transizione, classificazione degli stati e distribuzione stazionariaUna catena di Markov a tempo discreto e stati finiti è descritta da una matrice stocastica P: P(X_{n+1}=j | X_n=i)=P_ij, la legge al tempo n è π_0 P^n. Gli stati si classificano in classi comunicanti (irriducibilità), periodo (aperiodicità) e ricorrenza/transitorietà. Una distribuzione stazionaria soddisfa πP=π; per catene finite irriducibili esiste ed è unica, vale π_i=1/h_ii (h_ii = tempo medio di primo ritorno), e se la catena è anche aperiodica P^n converge a una matrice con tutte le righe uguali a π. Le catene reversibili (π_i P_ij = π_j P_ji) hanno stazionaria immediata.Catene di Markov - matrice di transizione, classificazione degli stati e distribuzione stazionaria →.

  • Modello: link 1→2,31\to2,3; 2→32\to3; 3→13\to1; 4→1,34\to1,3; G=0,85P+0,0375 11TG=0{,}85P+0{,}0375\,\mathbf1\mathbf1^T; entrate positive ⇒\Rightarrow irriducibile, aperiodica, π\pi unica.
  • Sistema: xj=0,0375+0,85∑i→jxi/d+(i)x_j=0{,}0375+0{,}85\sum_{i\to j}x_i/d^+(i); x4=0,0375x_4=0{,}0375; x1=0,0534375+0,85x3x_1=0{,}0534375+0{,}85x_3, x3=0,0853125+0,78625x1x_3=0{,}0853125+0{,}78625x_1, x2=0,0375+0,425x1x_2=0{,}0375+0{,}425x_1. Risultato PR=(0,3797;0,1989;0,3839;0,0375)\text{PR}=(0{,}3797;0{,}1989;0{,}3839;0{,}0375) (somma 11).
  • Passaggi: x4=0,0375x_4=0{,}0375, contributo di 44 a ciascuna delle pagine 11 e 33 =0,85⋅0,0375/2=0,0159=0{,}85\cdot0{,}0375/2=0{,}0159; sostituendo x3x_3 in x1x_1: x1=0,125953+0,6683125 x1⇒x1=0,1259530,3316875=0,3797x_1=0{,}125953+0{,}6683125\,x_1\Rightarrow x_1=\frac{0{,}125953}{0{,}3316875}=0{,}3797; poi x2=0,0375+0,425 x1=0,1989x_2=0{,}0375+0{,}425\,x_1=0{,}1989, x3=0,0853125+0,78625 x1=0,3839x_3=0{,}0853125+0{,}78625\,x_1=0{,}3839.
  • Pagina 4: nessun link entrante, vale 1−αn\tfrac{1-\alpha}n (solo salti); senza teletrasporto PP non è irriducibile e darebbe PR4=0\text{PR}_4=0.
  • Rapidità: autovalori di PP 11, −12±12i-\tfrac12\pm\tfrac12i, 00; GG ha gli altri moltiplicati per α\alpha; errore L1L^1 a k=1,2,3,4,5,10,20,30k=1,2,3,4,5,10,20,30: 0,157;0,134;0,097;0,041;0,021;2,3⋅10−3;1,2⋅10−5;8,6⋅10−80{,}157;0{,}134;0{,}097;0{,}041;0{,}021;2{,}3\cdot10^{-3};1{,}2\cdot10^{-5};8{,}6\cdot10^{-8}.
  • Convergenza: ∣λ2(G)∣=0,85⋅0,7071=0,601|\lambda_2(G)|=0{,}85\cdot0{,}7071=0{,}601; 2525 iterazioni per 10−610^{-6} in L1L^1; α=0,5\alpha=0{,}5: 1212 iterazioni, α=0,99\alpha=0{,}99: 3636 iterazioni e PR4=0,0025\text{PR}_4=0{,}0025.
  • Errori tipici: dimenticare il salto sulle pagine senza link entranti; normalizzare male; usare le colonne di PP invece delle righe.

Teoria collegata