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 ; ; ; (nessuno punta a ). Il navigatore casuale segue un link scelto a caso con probabilità , altrimenti salta a una pagina uniforme.
- Scrivere la matrice di transizione senza salti e la matrice con i salti. Perché ha un'unica distribuzione stazionaria?
- Calcolare il PageRank risolvendo il sistema lineare.
- Perché la pagina ha il PageRank più basso e quanto vale?
- Quanto converge l'iterazione di potenza da ? Quante iterazioni per un errore ?
- Come cambia il risultato con e ?
Soluzione
1. Senza salti ( se ): da sola non è irriducibile: la pagina è transitoria (nessuno la raggiunge) e è una classe chiusa, quindi darebbe e dipenderebbe dalla struttura dei link. In ogni entrata è , quindi da ogni pagina si va in un passo a ogni altra: la catena è irriducibile e aperiodica, ed esiste un'unica con e .
2. Le equazioni sono : Dalla quarta, e . Allora:
- ;
- ;
- .
Sostituendo in : , da cui . Poi e . Controllo: ✓. (Valori esatti: , , , .)
3. La pagina non riceve link: l'unico modo di arrivarci è un salto casuale, che ha probabilità a ogni passo, quindi esattamente. Le pagine e si scambiano quasi tutto il peso ( con probabilità , e manda metà del suo peso a più tutto il contributo di ): per questo sono prime e seconde. Nonostante punti a e , il suo contributo vale solo a ciascuna.
4. L'iterazione converge con rapidità . Gli autovalori di sono , (modulo ) e , e quelli di diversi da sono volte quelli di : . L'errore in norma vale (calcolato)
| iterazione | 1 | 2 | 3 | 4 | 5 | 10 | 20 | 30 |
|---|---|---|---|---|---|---|---|---|
Per un errore servono iterazioni ( a , a ). In pratica PR non è noto e ci si ferma quando la differenza fra due iterate consecutive è : qui succede a , perché il passo è 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 (autovalore ), mentre i pesi diventano più "puri" (vicini alla stazionaria di nella classe ):
| PR | iterazioni per | ||
|---|---|---|---|
| 0,5 | 0,354 | 12 | |
| 0,85 | 0,601 | 25 | |
| 0,99 | 0,700 | 36 |
Con la pagina scende a (si tende alla stazionaria di , dove ha peso ) ma la convergenza è più lenta. È il compromesso scelto in pratica: .
Codice di verifica
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.7Versione 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 ; ; ; ; ; entrate positive irriducibile, aperiodica, unica.
- Sistema: ; ; , , . Risultato (somma ).
- Passaggi: , contributo di a ciascuna delle pagine e ; sostituendo in : ; poi , .
- Pagina 4: nessun link entrante, vale (solo salti); senza teletrasporto non è irriducibile e darebbe .
- Rapidità: autovalori di , , ; ha gli altri moltiplicati per ; errore a : .
- Convergenza: ; iterazioni per in ; : iterazioni, : iterazioni e .
- Errori tipici: dimenticare il salto sulle pagine senza link entranti; normalizzare male; usare le colonne di invece delle righe.