Il metodo del PageRank: l`origine del successo di Google

Transcript

Il metodo del PageRank: l`origine del successo di Google
Università Degli Studi di Pisa
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Matematica
TESI DI LAUREA
Il metodo del PageRank:
l’origine del successo di Google
Candidato
Emiliano Morini
Relatore
Prof. Dario A. Bini
Controrelatore
Prof.ssa Beatrice Meini
Anno Accademico 2005/2006
Indice
Introduzione
2
1 Come rappresentare il web
1.1 Il PageRank . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Modellizzazione del problema . . . . . . . . . . . . . . . . . .
1.3 Modifiche della matrice . . . . . . . . . . . . . . . . . . . . . .
3
3
5
6
2 Strumenti matematici
8
2.1 Il metodo delle potenze . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Il teorema di Perron-Frobenius e proprietà delle matrici stocastiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Approfondimenti teorici
16
3.1 Il secondo autovalore della matrice P(c) . . . . . . . . . . . . 16
3.2 Relazione tra PageRank di base e PageRank(c) . . . . . . . . 19
4 Esperimenti Numerici
26
Riferimenti
33
1
Introduzione
La ricerca di informazioni sul web è diventata un’operazione quotidiana per
gran parte delle persone: per quasi ogni esigenza, con l’utilizzo di un motore
di ricerca è possibile ottenere una lunga lista di documenti contenenti i dati
inseriti. Molto spesso però, i risultati sono troppi, tanto da indurre l’utente a
consultare solo i primissimi documenti visualizzati. È quindi particolarmente
importante cercare di ordinare le pagine della rete secondo la loro rilevanza.
Infatti, i siti web proliferano senza alcun controllo di qualità e con ridotti
costi di pubblicazione, e le informazioni interessanti per l’utente risultano
essere solo una piccola parte dei risultati proposti. Tutto ciò ha portato molti
studiosi alla ricerca di procedimenti effettivamente applicabili per effettuare
un ordinamento della rete.
Considerando che al momento attuale si contano circa 8.5 · 109 pagine
attive e che le operazioni di aggiornamento dei link e dei documenti devono
essere effettuate abbastanza frequententemente, il numero di dati da trattare
risulta essere molto elevato; ciò comporta che i metodi proposti debbano
essere mirati per trattare al meglio questa situazione.
Un’idea che ha riscosso molto successo è stata quella di due studenti
dell’università di Stanford, Sergey Brin e Lawrence Page: l’importanza di una
pagina viene assegnata in base al numero di pagine importanti che puntano
verso di essa. Questo approccio ha permesso loro di implementare il metodo
del PageRank.
Brin e Page hanno utilizzato il loro procedimento per sviluppare Google,
uno dei motori di ricerca più utilizzati dagli utenti del web. Come loro stessi
hanno dichiarato, la forza del loro software risiede proprio nel PageRank:
“The heart of our software is P ageRank T M (...). [It] provides the basis for
all of our web search tools” ([8]).
2
1
Come rappresentare il web
Una volta che i siti web sono stati individuati e catalogati da appositi robot
(detti crowlers), la rete viene schematizzata come un grafo, dove le pagine
sono i nodi ed i collegamenti sono gli archi.
1.1
Il PageRank
Il metodo di Brin e Page cerca di assegnare in maniera oggettiva e meccanica
una misurazione dell’interesse umano verso una determinata pagina. L’idea
è che i voti, cioè i collegamenti, provenienti dai siti importanti siano più
significativi di quelli provenienti dalle pagine minori e il peso di un voto da
un’arbitraria fonte debba essere scalato in base al numero di voti che la fonte
stessa distribuisce. La filosofia di questo procedimento può quindi essere
riassunta come segue:
• una pagina importante dà importanza alle pagine a cui è collegata;
• una pagina è importante se è collegata a pagine importanti.
Formalizziamo il metodo di Brin e Page. Siano P e Q siti della rete e
definiamo BP = {pagine che hanno un collegamento verso P} e |Q| = numero
di link uscenti da Q. Allora il il rank r(P) di P è dato da:
r(P ) =
X r(Q)
.
|Q|
Q∈B
P
L’insieme di equazioni ottenuto in questo modo è un sistema lineare la cui
dimensione n coincide col numero di pagine presenti sul web. Date le elevate
dimensioni del sistema, risulta improponibile la risoluzione mediante metodi
diretti. Si pensi, ad esempio, che il metodo di eliminazione gaussiana, che
richiede circa 2n3 /3 operazioni aritmetiche, impiegherebbe milioni di anni di
tempo di cpu anche sui più veloci calcolatori disponibili al giorno d’oggi.
Denotando con P1 , P2 , . . . , Pn le pagine presenti sul web, possiamo introdurre un metodo iterativo che agisce nel seguente modo: si assegna a
ciascuna
pagina un’importanza iniziale (non negativa) r0 (Pi ), in modo che
Pn
i=1 r0 (Pi ) = 1; poi si calcola ricorsivamente il nuovo rank
rj (Pi ) =
X rj−1 (Ph )
,
|Ph |
P ∈B
h
per j = 1, 2, 3, . . . .
(1)
Pi
Ponendo π (j) = (rj (P1 ), rj (P2 ), . . . , rj (Pn ))T , è possibile riscrivere l’equazione precedente in forma matriciale:
3
π (j) = LT π (j−1) ,
(2)
½
1/|Pi | se Pi punta verso Pj ,
0
altrimenti.
Si osservi che la matrice L è non negativa e
dove L = [lij ] è la matrice con lij =
n
X
j=1
½
lij =
1 se ha almeno un collegamento verso qualche pagina,
0 altrimenti.
Per applicare questo algoritmo, abbiamo bisogno che la successione definita da (2) converga verso un unico limite indipendentemente dalla scelta del
vettore iniziale π (0) (perché vogliamo dare un ordinamento oggettivo), e che
questo limite sia non negativo e non nullo (in quanto deve rappresentare il
rank delle pagine). Se le condizioni precedenti sono soddisfatte, chiameremo
PageRank il vettore π = limj→∞ π (j) scalato in modo che la somma delle sue
componenti sia 1; l’i-esima componente di π corrisponde al rank assegnato
alla pagina Pi . Purtroppo, come vedremo in dettaglio più avanti, nel modello
che abbiamo finora presentato non è garantita l’esistenza di π.
Possiamo dare un’interpretazione intuitiva alla definizione del PageRank,
riconducendoci ad una passeggiata aleatoria sul grafo del web: supponiamo
che un navigatore virtuale passi casualmente tra i siti della rete, scegliendo a
caso un link dalla pagina in cui si trova. Il generico elemento lij rappresenta
la probabilità di passare dal nodo i al nodo j, mentre la probabilità di essere,
dopo un numero elevato di istanti, sulla pagina Ph è data da πh , cioè dall’hesima componente del PageRank; questa è l’idea di base del modello.
Per diversi motivi, primo fra i quali assicurare l’esistenza di π, la matrice con cui si implementa il metodo non è L, ma è una matrice ottenuta da
questa apportando opportune modifiche. Osserviamo infatti che con questo
modello ci si imbatte subito in un problema: una volta arrivato in una pagina senza link in uscita, il navigatore virtuale è incapace di muoversi; una
semplice soluzione risulta essere quella di sostiture le righe nulle di L con il
vettore (1/n, 1/n, . . . , 1/n), dando cioè al navigatore la possibiltà di uscire dalla situazione di stallo collegandosi ad una qualsiasi pagina della rete.
Chiamiamo P la matrice ottenuta apportando la suddetta modifica a L.
Possiamo riscrivere l’equazione (2) in una forma più generale:
π (j) = RT π (j−1) ,
dove R è la matrice con cui viene implementato il metodo.
4
(3)
1.2
Modellizzazione del problema
Per trattare con rigore matematico il metodo del PageRank, possiamo utilizzare gli strumenti che ci vengono forniti dall’analisi numerica e dalla probabilità: la passeggiata aleatoria del navigatore virtuale non è altro che una
catena di Markov a stati finiti e tempi discreti.
Definizione 1.1. Dato uno spazio probabilizzato (Ω, A, P ) e un insieme
di indici I, la classe di variabili aleatorie {Xt }t∈I su di esso definita è una
catena di Markov con spazio degli stati E (dove E è un insieme numerabile,
finito o infinito) se, per ogni intero n ≥ 0, per ogni successione t0 , . . . , tn+1
(con 0 ≤ t0 < t1 < · · · < tn+1 ) e per ogni ik ∈ E (k = 0, 1, . . . ), vale la
proprietà di Markov:
P (Xtn+1 = in+1 | Xtk = ik , k = 0, 1, . . . , n) = P (Xtn+1 = in+1 | Xtn = in ).
La proprietà di Markov asserisce che il processo è “senza memoria”, cioè
lo stato della catena nel prossimo istante dipende solo ed esclusivamente dallo
stato attuale.
Osservazione 1.2. Ad ogni catena di Markov per cui I sia numerabile e
|E| = n < ∞ può essere associata una matrice: detto mij (t) = P (Xt =
ij | Xt−1 = ii ), la matrice Mn×n (t) = [mij (t)] riassume le informazioni relative alla catena all’istante t. Le quantità mij (t) sono dette probabilità di
transizione, mentre M(t) è detta matrice di transizione.
Definizione 1.3. Una
Pn matrice stocastica è una matrice quadrata non negativa Mn×n tale che j=1 mij = 1 per ogni riga i = 1, 2, . . . , n.
Definizione 1.4. Una catena di Markov omogenea è una catena di Markov
definita da una matrice stocastica indipendente da t, cioè M(t) = M.
Osservazione 1.5. Si vede subito che le matrici stocastiche sono tutte e sole
le matrici associate ad una catena di Markov a stati finiti e tempi discreti.
Osservando più attentamente il modello di Brin e Page, è possibile riconoscere che la matrice P è la matrice stocastica associata alla catena di Markov
costituita dalle variabili aleatorie {Xt }t∈N , dove Xt rappresenta la pagina in
cui si trova il navigatore virtuale all’istante t (in questo caso le probabilità
di transizione sono costanti per ogni t).
5
1.3
Modifiche della matrice
Per avere una matrice che definisca adeguatamente il PageRank, non possiamo usare direttamente la matrice L derivante dalla struttura dei collegamenti
ipertestuali della rete. Come già osservato, una prima modifica da effettuare
è quella che porta L in P, in modo tale da avere una matrice stocastica.
Ma un’altra grande difficoltà si presenta: la catena identificata da P può
essere riducibile (ed è quello che normalmente accade, poiché P è una matrice
sparsa). La catena è riducibile se contiene un insieme di stati “trappola”,
cioè se la matrice P soddisfa
µ
¶
T11 T12
T
,
ΠPΠ =
0 T22
dove Π è un’opportuna matrice di permutazione e le matrici T1,1 e T2,2 sono
quadrate.
Partizioniamo gli stati in due gruppi, S1 e S2 , in modo che Tij rappresenti
la restrizione della matrice di transizione agli stati di Si verso gli stati di Sj .
Dato che T21 = 0, quando il navigatore virtuale arriva in S2 non può più
tornare in alcun stato di S1 .
Una catena di Markov irriducibile è tale che per ogni coppia di indici
(h, k), lo stato ik può essere raggiunto dallo stato ih . L’irriducibilità è una
proprietà molto importante perché garantisce, grazie al teorema di PerronFrobenius (che vedremo nel paragrafo 2.2), l’esistenza e l’unicità del vettore
di distribuzione stazionario υ, che è un vettore positivo tale che
υT = υT M e
n
X
υk = 1,
i=1
dove M è la matrice stocastica associata alla catena irriducibile.
Osservazione 1.6. D’ora in avanti, anche dove non meglio specificato, considereremo solo catene di Markov a stati finiti e tempi discreti. Spesso useremo i termini riferiti alle catene anche per le matrici stocastiche, e viceversa: grazie alla corrispondenza biunivoca dei due concetti non c’è alcuna
ambiguità.
Per assicurare l’irriducibilità, Brin e Page scelgono un vettore di distribuzione di probabiltà v, cioè un vettore positivo tale che la somma delle
sue coordinate sia 1, calcolano E = evT (dove e è il vettore che ha tutte le
coordinate uguali a 1) e implementano il metodo utilizzando la matrice
P(c) = c P + (1 − c)E,
6
dove c ∈ (0, 1).
Ciò può essere interpretato nel seguente modo: il navigatore si comporta
con probabilità c secondo le regole di P e con probabilità (1 − c) secondo
le regole di v. Il vettore di distribuzione di probabilità scelto permette di
personalizzare l’ordinamento delle pagine. Di solito, il valore di c è 0.85.
Il vantaggio apportato dalle suddette modifiche è che P(c) è stocastica,
irriducibile e, come vedremo tra poco, primitiva, cioè con un solo autovalore
di modulo massimo. Tali proprietà ci permetteranno di calcolare velocemente il PageRank di questa nuova matrice.
Notazione: d’ora in avanti indicheremo con PageRank(c) il vettore ottenuto
implementando il metodo con la matrice P(c).
7
2
Strumenti matematici
Per approfondire lo studio del problema e per dimostrare la convergenza del
metodo, abbiamo bisogno di sviluppare alcuni strumenti. Iniziamo dando la
seguente
Definizione 2.1. Scelta una norma vettoriale k · k, la norma definita da
kAk = max kAxk
kxk=1
per ogni A ∈ Cn×n , viene detta norma matriciale indotta da k · k.
Le norme matriciali indotte più utilizzate sono:
Norma 1: kAk1 = max
j=1,...,n
Norma 2: kAk2 =
n
X
p
ρ(AH A) ;
Norma ∞: kAk∞ = max
i=1,...,n
2.1
|ai,j | ;
i=1
n
X
|ai,j | .
j=1
Il metodo delle potenze
Il calcolo del PageRank(c) può essere effettuato mediante l’applicazione del
metodo delle potenze: si tratta di un metodo iterativo classico, che permette
di approssimare l’autovalore dominante (cioè di modulo massimo) di una
matrice, ed un corrispondente autovettore. Da (3), risulta infatti che il limite
della successione, se esiste, è un autovettore della matrice [P(c)]T , relativo
all’autovalore 1 (vedremo che questo è l’autovalore dominante).
Per prima cosa, supponiamo che la matrice con cui implementiamo il metodo sia diagonalizzabile e che abbia un solo autovalore di modulo massimo.
Sia A ∈ Cn×n , e sia β = {x1 , x2 , . . . , xn } una base di autovettori corrispondenti agli autovalori λ1 , λ2 , . . . , λn , con
|λ1 | > |λ2 | ≥ · · · ≥ |λn | .
Scelto un vettore iniziale t0 ∈ Cn , si costruisce la successione {yk }, con
k = 1, 2, . . . , definita da
½
y 0 = t0
(4)
yk = Ayk−1 , k = 1, 2, . . .
8
Il vettore iniziale può essere espresso per mezzo della combinazione lineare
t0 =
n
X
αi xi .
i=1
Supponiamo inoltre che t0 sia tale che α1 6= 0; risulta quindi
"
µ ¶k #
n
n
n
X
X
X
λi
yk = Ak t0 =
αi Ak xi =
αi λi k xi = λ1 k α1 x1 +
αi
xi .
λ1
i=1
i=1
i=2
(5)
(k)
(i)
Indichiamo con yr e con xr le componenti r-esime dei vettori yk e xi ;
per ogni indice j per cui yj (k) 6= 0 e xj (1) 6= 0, si ha
µ ¶k+1
n
X
λi
(1)
α1 xj +
αi
xj (i)
λ1
yj (k+1)
i=2
=
λ
(6)
¶k
µ
1
n
X
yj (k)
λi
(i)
(1)
α1 xj +
αi
xj
λ
1
i=2
e, dal momento che |λi /λ1 | < 1 per i ≥ 2, risulta
yj (k+1)
= λ1 .
k→∞ yj (k)
lim
Quindi uno dei rapporti yj (k+1) /yj (k) , a partire da un certo indice k, può
approssimare l’autovalore dominante λ1 .
Per approssimare l’autovettore x1 , si ricava da (5) che
yk
= α1 x1 ,
k→∞ λ1 k
lim
e quindi, per j = 1, 2, . . . , n,
yj (k)
= α1 xj (1)
k→∞ λ1 k
lim
e
yk
x1
=
,
k→∞ yj (k)
xj (1)
lim
per ogni indice j tale che yj (k) 6= 0 e xj (1) 6= 0.
Osservazione 2.2. Dal momento che, per k sufficientemente elevato, l’indice m di una componente di massimo modulo di yk rimane costante, la
successione yk /ym (k) converge all’autovettore x1 normalizzato in norma ∞.
Osservazione 2.3. Da (6) si può osservare che la velocità del metodo dipende dai rapporti |λi /λ1 |, per i = 2, 3, . . . , n; questi rapporti sono tutti
maggiorati da |λ2 /λ1 |.
9
Osservando la (4), si nota che per applicare effettivamente il metodo
occorre eseguire una normalizzazione ad ogni passo, onde evitare situazioni
di overflow o underflow, cioè di crescita o diminuzione incontrollata dei valori
numerici calcolati. La successione effettivamente calcolata è

uk = A tk−1 
1
k = 1, 2, . . . ,
(7)
tk =
uk 
τk
dove τk è uno scalare tale che ktk k = 1.
Risulta allora
tk =
1
1
y k = A k t0 ,
γk
γk
dove γk =
k
Y
τi ,
i=1
e poiché
"
#
¶k+1
n
n µ
k+1
X
1 k+1
λ
1 X
λ
i
1
uk+1 = A t0 =
αi Ak+1 xi =
α1 x1 +
αi xi ,
γk
γk i=1
γk
λ
1
i=2
(8)
operando come nella (6), si ha che per tutti gli indici j tali che tj (k) 6= 0 e
xj (1) 6= 0,
µ ¶k+1
n
X
λi
(1)
α 1 xj +
αi
xj (i)
(k+1)
λ
1
uj
i=2
= λ1
(9)
µ ¶k
n
(k)
X
tj
λ
i
(i)
α1 xj (1) +
αi
xj
λ
1
i=2
e quindi
uj (k+1)
lim
= λ1 .
k→∞ tj (k)
Inoltre, segue da (8) che
lim
k→∞
γk
λ1 k+1
uk+1 = α1 x1 .
Un criterio di arresto per il metodo può essere dato da |τk+1 − τk | < ², o da
|(τk+1 − τk )/τk+1 | < ², dove ² è una tolleranza fissata.
Con ragionamenti analoghi, si dimostra che il metodo delle potenze è
convergente anche nel caso in cui la matrice sia diagonalizzabile, l’autovalore
di modulo massimo abbia molteplicità algebrica maggiore di 1 e non esistano
altri autovalori con lo stesso modulo.
10
Osservazione 2.4. Come risulta dalle considerazioni precedenti, la condizione α1 6= 0 è, in teoria, necessaria per la convergenza della successione (6)
a λ1 . In pratica però, se t0 fosse tale che α1 = 0, a causa degli errori di arrotondamento, i vettori tk effettivamente calcolati in aritmetica floating point
avrebbero comunque una componente non nulla lungo x0 . Inoltre, scegliendo
a caso, la probabilità di scegliere un vettore iniziale in Cn con α1 = 0 è nulla.
Analizziamo ora il caso che, come vedremo, ci riguarda (per il caso generale si veda [1]). Supponiamo di avere una matrice A ∈ Cn×n , con gli
autovalori ordinati nel seguente modo: |λ1 | > |λ2 | ≥ · · · ≥ |λn |. Prendiamo
una base di Jordan γ = {x1 , x2 , . . . , xn } relativa alla forma canonica di A ed
esprimiamo t0 in questa base, per mezzo della combinazione lineare
t0 =
n
X
αi xi .
i=1
Risulta quindi
Ã
¸k !
1
yk = Ak t0 = α1 λ1 k x1 +
αi Ak xi = λ1 k α1 x1 +
αi
A xi .
λ
1
i=2
i=2
(10)
1
La matrice λ1 A ha un autovalore uguale ad 1, mentre tutti gli altri hanno
modulo strettamente inferiore; grazie a questa proprietà è possibile calcolare
h
ik
1
il limk→∞ λ1 A .
n
X
n
X
·
Teorema 2.5. Per ogni M ∈ Cn×n , il limk→∞ M k esiste se e solo se ρ(M) <
1 oppure se ρ(M) = 1 e 1 è l’unico autovalore di M di modulo massimo ed
è semisemplice, cioè moltalg (1) = moltgeom (1).
Quando il limite esiste, si ha
• limk→∞ M k = 0, se ρ(M) < 1;
P
• limk→∞ M k = ki=1 vi wiT , altrimenti
dove k = moltalg (1), ed i vettori vi e wi sono tali che la forma canonica di
Jordan J di M possa essere scritta come


−w1T −
 −wT − 
£
¤
2


J=
 · M · v1 | v2 | . . . | vn .
..


.
−wnT −
11
Dimostrazione. Si vedano [1] e [7]
Utilizzando questo risultato, possiamo trarre ulteriori informazioni da
(10): sia w un autovettore sinistro di A relativo all’autovalore λ1 (cioè
wT A = λ1 wT ), scalato in modo che wT x1 = 1. Risulta quindi
¸k
·
1
lim
A xi = x1 wT xi = βi x1 , dove βi = wT xi , per i = 2, . . . , n.
k→∞ λ1
Supponiamo che α1 +
n
X
αi βi 6= 0. Per ogni indice j per cui yj (k) 6= 0 e
i=2
xj (1) 6= 0, si ha
Ã
α1 +
(k+1)
lim
k→∞
n
X
!
αi βi xj (1)
yj
i=2
!
= λ1 Ã
,
n
(k)
yj
X
α1 +
αi βi xj (1)
(11)
i=2
e quindi, come in precedenza,
yj (k+1)
= λ1 .
k→∞ yj (k)
lim
Anche per l’approssimazione dell’autovettore possiamo operare come nel caso
già analizzato: da (10) possiamo dedurre che
Ã
!
n
X
yk
= α1 +
αi βi x1 ,
lim
k→∞ λ1 k
i=2
e quindi, per j = 1, 2, . . . , n,
Ã
!
n
X
yj (k)
lim
= α1 +
αi βi xj (1)
k→∞ λ1 k
i=2
e
yk
x1
= (1) ,
(k)
k→∞ yj
xj
lim
per ogni indice j tale che yj (k) 6= 0 e xj (1) 6= 0.
P
Osservazione 2.6. Come nel caso precedente, l’ipotesi α1 + ni=2 αi βi 6= 0
è necessaria solo in teoria, per quanto detto nell’osservazioneP2.4. Inoltre la
probabilità di prendere il vettore iniziale sull’iperpiano x1 + ni=2 xi βi = 0 è
nulla.
Il costo computazionale per passo del metodo è quello del calcolo di un
prodotto matrice-vettore: nel caso generale il metodo richiede quindi O(n2 )
operazioni moltiplicative.
12
2.2
Il teorema di Perron-Frobenius e proprietà delle
matrici stocastiche
Lo studio delle matrici non negative ha portato a diversi risultati, e uno
dei più rilevanti è il teorema di Perron-Frobenius; questo teorema permette
di garantire la convergenza del metodo delle potenze applicato alla matrice
P(c).
Teorema 2.7. (Perron-Frobenius) Sia A ∈ Rn×n una matrice non negativa e irriducibile, con raggio spettrale ρ(A) e spettro σ(A); allora valgono i
seguenti fatti:
• ρ(A) ∈ σ(A) e ρ(A) > 0;
• la molteplicità algebrica di ρ(A) è 1;
• esiste un autovettore x > 0 (dove la disuguaglianza è da intendersi
elemento per elemento) relativo a ρ(A);
• l’unico vettore definito da A p = ρ(A) p, con p > 0 e kpk1 = 1 è
detto vettore di Perron. Non esistono autovettori non negativi di A
relativi a ρ(A) (ad eccezione dei multipli positivi di p);
• se A > 0, ρ(A) è l’unico autovalore dominante.
Dimostrazione. Omessa. (Si veda, ad esempio, [7]).
Corollario 2.8. Ogni autovettore relativo all’autovalore ρ(A) ha tutte le
coordinate non nulle e concordi.
Osservando la matrice P(c), è possibile vedere che questa soddisfa le ipotesi del teorema precedente. Uno sguardo più attento, mostra che addirittura
si ha P(c) > 0, in quanto ogni componente del vettore v è positiva. Avendo quindi un solo autovalore di modulo massimo, possiamo esser certi che
il metodo delle potenze converga ad un multiplo del vettore di Perron p di
[P(c)]T .
Osservazione 2.9. Per ogni norma matriciale indotta k·k e per ogni matrice
A vale ρ(A) ≤ kAk. Infatti, preso un autovalore λ di A ed un corrispondente
autovettore x normalizzato rispetto alla norma k · k, si ha |λ| = kAxk, da
cui |λ| ≤ maxkvk=1 kAvk = kAk.
Dal momento che P(c) è una matrice stocastica, si ha kP(c)k∞ = 1, e
quindi, grazie all’osservazione 2.9,
ρ(P(c)) ≤ 1.
13
(12)
Osservando che P(c) e = e (dove e è il vettore di tutti 1 definito in precedenza), la (12) si riduce a un’eguaglianza. Possiamo quindi concludere che per
calcolare il PageRank(c) basta moltiplicare il vettore ottenuto con il metodo
delle potenze per l’inverso della somma delle sue componenti.
Introduciamo qualche altro risultato che ci permetta di approfondire la
nostra analisi.
Dal momento che il teorema 2.7 non è direttamente applicabile alle matrici
riducibili, la strategia per analizzare un’arbitraria catena è quella di ridursi,
il più possibile, al caso delle catene irriducibili.
Se P è riducibile allora, per definizione, esiste una matrice di permutazione Π e due matrici quadrate X e Z tali che
µ
¶
µ
¶
X Y
X Y
T
Π PΠ =
. Per comodità, scriveremo P ∼
.
0 Z
0 Z
Se X o Z sono riducibili,
ha che

µ
¶
R
X Y
∼ 0
0 Z
0
allora tramite un’altra matrice di permutazione si

S T
U V ,
0 W
dove R, U e W sono quadrate.
Ripetendo il ragionamento, si arriva alla

X11 X12
 0 X22

P ∼  ..
..
 .
.
0
0
seguente situazione:

· · · X1k
· · · X2k 

..  ,
...
. 
· · · Xkk
dove Xii è irriducibile oppure Xii = [0]1×1 . Infine, se esistono righe che hanno
elementi non nulli solo nel blocco diagonale, allora è possibile permutare tali
righe nella parte inferiore della matrice, in modo da arrivare a


P1,1 P1,2 · · · P1,r
P1,r+1
P1,r+2 · · · P1,m
 0 P2,2 · · · P2,r
P2,r+1
P2,r+2 · · · P2,m 


.
.
.
.
..
..
.
..


..
..
..
..
..
.
.
.




0 · · · Pr,r
Pr,r+1
Pr,r+2 · · · Pr,m 
 0
P∼
 , (13)
0 ···
0
Pr+1,r+1
0
···
0
 0



0 ···
0
0
Pr+2,r+2 · · ·
0
 0



.
.
.
.
.
.
.
.


..
..
..
..
..
..
..
..
0
0 ···
0
0
0
· · · Pm,m
14
dove ogni P1,1 , . . . , Pr,r è una matrice irriducibile e substocastica (cioè non
negativa, con norma infinito ≤ 1 ed esiste una riga tale che la somma dei suoi
elementi sia < 1) oppure è del tipo [0]1×1 , mentre Pr+1,r+1 , . . . , Pm,m sono
irridicibili (ed ovviamente stocastiche).
Proposizione 2.10. Per ogni matrice S substocastica e irriducibile si ha
ρ(S) < 1.
Dimostrazione. Grazie all’osservazione 2.9, sappiamo che ρ(S) ≤ 1. Supponiamo, per assurdo, che
Pnρ(S) = 1. Per il teorema 2.7, esiste un vettore x tale
che Sx = x, x > 0 e i=1 xi = 1. Per ipotesi, esiste una riga h di S tale che
la somma dei suoi elementi sia minore di 1.
Da
sh,1 x1 + · · · + sh,n xn = xh
si ottiene un assurdo osservando che
0 = sh,1 x1 + · · · + sh,h−1 xh−1 + (sh,h − 1)xh + sh,h+1 xh+1 + . . . sh,n xn <
< sh,1 + · · · + sh,h−1 + (sh,h − 1) + sh,h+1 + . . . sh,n < 0.
15
3
3.1
Approfondimenti teorici
Il secondo autovalore della matrice P(c)
È possibile dare una maggiorazione del modulo del secondo autovalore della
matrice P(c), in modo da avere una stima della velocità di convergenza del
metodo delle potenze; presentiamo i principali risultati ottenuti da H. Haveliwala e S. D. Kamvar in [3]. Lo studio è effettuato anche nei casi c = 0 e c = 1.
Notazione: in questa sezione indicheremo con γi il generico autovalore di
P e con λi il generico autovalore di P(c); supporremo che siano ordinati nel
seguente modo: γ1 = 1 ≥ |γ2 | ≥ · · · ≥ |γn | ≥ 0 e λ1 = 1 > |λ2 | ≥ · · · ≥
|λn | ≥ 0.
Teorema 3.1. Il modulo del secondo autovalore di P(c) è limitato superiormente da c.
Dimostrazione. Per c = 0, si ha che P(c) = evT , che è una matrice di rango
1 e quindi il secondo autovalore è nullo.
Per c = 1, P(c) = P, per cui il |λ2 | ≤ 1, perché è una matrice stocastica.
Per 0 < c < 1, la tesi segue dai seguenti lemmi:
Lemma 3.2. Il secondo autovettore x2 di [P(c)]T è ortogonale a e.
Dimostrazione. Dal momento che |λ2 | < |λ1 | = 1 (per il teorema 2.7), il
secondo autovettore x2 di [P(c)]T è ortogonale al primo autovettore di P(c),
che è e; infatti, si ha
he, x2 i = hP(c)e, x2 i = he, [P(c)]T x2 i = λ2 he, x2 i.
Lemma 3.3. ET x2 = 0.
Dimostrazione. Per definizione, E = evT , e ET = veT . Cosı̀, ET x2 =
veT x2 = v 0 = 0.
Lemma 3.4. Il secondo autovettore x2 di [P(c)]T deve essere un autovettore
yi di PT , ed il corrispondente autovalore è γi = λ2 /c.
Dimostrazione. . Per definizione di [P(c)]T e per il lemma 3.3, si ha
[P(c)]T x2 = cPT x2 + (1 − c)ET x2 = cPT x2 = λ2 x2 ;
dividendo per c entrambi i membri e ponendo yi = x2 , si ottiene che PT yi =
γi yi , da cui la tesi.
16
Lemma 3.5. Risulta |λ2 | ≤ c.
Dimostrazione. Dal lemma 3.4 sappiamo che γi = λ2 /c ; dato che P è una
matrice stocastica, si ha che |γi | ≤ 1, e quindi |λ2 | ≤ c.
Introduciamo una definizione relativa alle catene di Markov; per semplicità, indichiamo con M = (mij ) la matrice di transizione associata alla
generica catena.
Definizione 3.6. Un insieme di stati S non vuoto di una catena di Markov
è un sottoinsieme chiuso se per ogni coppia di stati (i, j), i ∈ S e j 6∈ S
implica mij = 0. Un sottoinsieme chiuso è irriducibile se ∀ R ⊂ S, R non è
un sottoinsieme chiuso.
Osservazione 3.7. Ad ogni sottoinsieme chiuso irriducibile si può far corrispondere un blocco del tipo Pi,i della forma canonica (13), con i compreso
tra r + 1 e m.
Proposizione 3.8. Se c 6= 1, l’unico sottoinsieme chiuso della catena di
Markov corrispondente a P(c) è E, cioè l’insieme di tutti gli stati.
Dimostrazione. La verifica che E sia un sottoiniseme chiuso è immediata, in
quanto è “vera a vuoto” (l’ipotesi è falsa). Supponiamo ora che S sia un
altro sottoinsieme chiuso. Dal momento che ogni elemento di P(c) è positivo
(perché lo è v), se esistesse j 6∈ S, scegliendo arbitrariamente un indice di S,
troveremmo un elemento nullo nella matrice, ma ciò è impossibile. Quindi
S = E.
Osservazione 3.9. Dalla proposizione precedente segue che E è irriducibile,
in quanto non esistono altri sottoinsiemi chiusi.
Sotto opportune ipotesi (che nel nostro caso sono soddisfatte), il modulo
del secondo autovalore di P(c) raggiunge c, anzi vale il seguente
Teorema 3.10. Se P ha almeno due sottoinsiemi chiusi irriducibili, allora
il secondo autovalore di P(c) è λ2 = c.
Dimostrazione. Per c = 0, la tesi è banalmente verificata, in quanto P(0) =
E, e quindi λ2 = 0.
Per c = 1, si ha che la matrice P(1) = P ha almeno due sottoinsiemi chiusi
irriducibili. A meno di cambiamenti di base, possiamo supporre che P sia
nella forma canonica (13). Risulta allora che nella parte diagonale (cioè nella
17
parte in basso a destra) ci siano almeno due matrici stocastiche irriducibili.
Indichiamo con Pr+1,r+1 e Pr+2,r+2 tali matrici. Possiamo quindi scrivere


T
P0
,
P =  0 ··· 0
Pr+1,r+1
0
0 ··· 0
0
Pr+2,r+2
dove T è un’opportuna matrice triangolare superiore a blocchi e P0 la parte
rimanente. Dato che Pr+1,r+1 e Pr+2,r+2 sono irriducibili e stocastiche, ognuna ha un autovettore sinistro relativo all’autovalore 1; è sufficiente prendere
questi due autovettori ed immergerli nello spazio di partenza (cioè completare
opportunamente le coordinate con degli 0) per avere due autovettori sinistri
di P linearmente indipendenti relativi all’autovalore 1.
Per 0 < c < 1, operiamo nel modo seguente: cerchiamo di costruire un vettore xi che sia un autovettore di [P(c)]T relativo a λi = c. Allora, visto che
λ1 = 1 e che esiste un autovalore uguale a c, si ha |λ2 | ≥ c. Dal teorema
3.1, segue che |λ2 | ≤ c, e quindi |λ2 | = c; a costo di scambiare λ2 con λi , si
ottiene λ2 = c. Per costruire xi , utilizziamo i seguenti lemmi:
Lemma 3.11. Ogni autovettore yi di PT che è ortogonale a e è un autovettore xi di [P(c)]T relativo all’autovettore λi = cγi , dove PT yi = γi yi .
Dimostrazione. Sia eT yi = 0; allora ET yi = veT yi = 0. Per definizione,
PT yi = γi yi , e quindi
[P(c)]T yi = cPT yi + (1 − c)ET yi = cPT yi = cγi yi ,
da cui la tesi.
Lemma 3.12. Esiste un autovalore λi di P(c) uguale a c.
Dimostrazione. Costruiamo un vettore xi che sia ortogonale a e. Per quanto
visto nel caso c = 1, esistono due autovettori y1 e y2 di PT linearmente
indipendenti, relativi all’autovalore dominante 1. Poniamo
k2 = y2 T e.
k1 = y1 T e,
Se k1 = 0, allora xi = y1 , invece se k2 = 0, allora xi = y2 ; altrimenti si ha
k1 , k2 > 0, e quindi possiamo scrivere xi = y1 /k1 − y2 /k2 . Si ha che xi è un
autovettore di PT relativo all’autovalore 1 ed è ortogonale a e. Per il lemma
3.11, xi è un autovettore di [P(c)]T corrispondente all’autovalore c, e quindi
λi = c.
18
Grazie ai risultati precedenti, e per quanto detto nell’ osservazione 2.3,
possiamo affermare che l’errore commesso al passo k tende a zero come ck .
Dal momento che c = 0.85, ne deduciamo che si ha una buona velocità di
convergenza (rapportata alla dimensione del problema).
3.2
Relazione tra PageRank di base e PageRank(c)
Ci occupiamo adesso di presentare alcuni risultati dimostrati da S. SerraCapizzano in [12], dai quali si ottiene una descrizione analitica della forma
canonica di Jordan della matrice P(c), partendo dalla forma canonica di
Jordan di P.
Per prima cosa, dimostriamo un risultato “simile” al teorema 2.7.
Teorema 3.13. Sia A ∈ Rn×n una matrice non negativa, con r = ρ(A);
allora valgono i seguenti fatti:
• r ∈ σ(A) (ma r può esser nullo);
• Az = r z , per qualche z ∈ {y | y ≥ 0, y 6= 0}.
Per dimostrare il teorema 3.13 è utile il seguente
Lemma 3.14. Siano A, B ∈ Rn×n , con A ≥ B ≥ 0. Allora ρ(A) ≥ ρ(B).
Dimostrazione. Dalle ipotesi segue che Ak ≥ Bk per ogni k > 0. Allora
1
1
k
k
kAk k∞ ≥ kBk k∞ =⇒ kAk k∞
≥ kBk k∞
Passando al limite, per k → ∞, e ricordando che per ogni norma matriciale
1
indotta limk→∞ kMk k k = ρ(M) (si veda [1]), si ha la tesi.
Dimostrazione teorema 3.13. Consideriamo la sequenza di matrici positive
(e irriducibili) Ak = A + k1 H, dove H è la matrice di tutti 1, e siano rk =
ρ(Ak ) > 0 e pk il vettore di Perron di Ak . Osserviamo che la successione
n
{pk }∞
k=1 è limitata perché ogni pk è contenuto nella sfera unitaria di R . Per
il teorema di Bolzano-Weierstrass, esiste una sottosuccessione convergente
{pki }∞
i=1 , con un certo limite z. Si osservi che z ≥ 0 e z 6= 0, perché pki > 0,
kpki k1 = 1 per ogni i e la norma è un’applicazione continua. Dato che
A1 > A2 > · · · > A, dal lemma 3.14 segue che r1 ≥ r2 ≥ · · · ≥ r, quindi
{rk }∞
k=1 è una successione non crescente di numeri positivi minorata da r ;
allora
lim rk = r̂ esiste e r̂ ≥ r. In particolare,
k→∞
19
lim rki = r̂.
i→∞
Ma limk→∞ Ak = A implica limi→∞ Aki = A, quindi, dato che il limite del
prodotto è uguale al prodotto dei limiti (a patto che tutti i limiti esistano e
siano finiti), si ha che
Az = lim Aki pki = lim rki pki = r̂z =⇒ r̂ ∈ σ(A) =⇒ r̂ ≤ r.
i→∞
i→∞
Quindi r̂ = r, e Az = rz, con z ≥ 0.
Definizione 3.15. Chiameremo PageRank di base un genericoPautovettore
sinistro y della matrice P, relativo all’autovalore 1, con y ≥ 0 e ni=1 yi = 1.
Osservazione 3.16. La non unicità del PageRank di base è coerente con
quanto detto finora, poiché abbiamo già notato che l’implementazione del
metodo con la matrice P non assicura un risultato univoco.
Dai risultati che stiamo per presentare si ottiene, in particolare, che
P ageRank(c) = P ageRank di base + R(c),
dove R(c) è un vettore razionale dipendente da c. Dal momento che PageRank(c) può essere calcolato efficientemente per c lontano da 1, questo risultato può essere utilizzato per applicare metodi di estrapolazione al calcolo di
PageRank(c) quando c ' 1 (si veda [2]).
Teorema 3.17. Supponiamo che la matrice P sia diagonalizzabile. Se P =
T
Xdiag(1, λ2 , . . . , λn )X−1 , con X = [e|x2 | . . . |xn ], [X−1 ] = [y1 |y2 | . . . |yn ], e
diag(1, λ2 , . . . , λn ) è la matrice diagonale con elementi principali 1, λ2 , . . . , λn ,
allora
P(c) = Zdiag(1, cλ2 , . . . , cλn )Z−1 , Z = XR−1 ,
dove
R = I + e1 wT ,
wT = (0, w2 , . . . , wn ),
wj = (1 − c)vT xj /(1 − cλj ),
j = 2, . . . , n.
Dimostrazione. Per ipotesi abbiamo che P è diagonalizzabile, ed inoltre sappiamo che e è un suo autovettore relativo all’autovettore dominante 1, da cui
λ1 = 1 e x1 = e. Da [y1 |y2 | . . . |yn ]T X = X−1 X = I si ha che [y1 |y2 | . . . yn ]T e =
X−1 e = e1 (il primo vettore della base canonica). Allora
P(c) = cP + (1 − c)evT = Xdiag(c, cλ2 , . . . , cλn )X−1 + (1 − c)evT ,
e quindi
X−1 P(c)X = diag(c, cλ2 , . . . , cλn ) + (1 − c)X−1 evT X
= diag(c, cλ2 , . . . , cλn ) + (1 − c)e1 vT X
= diag(c, cλ2 , . . . , cλn ) + (1 − c)e1 [vT e, vT x2 , . . . , vT xn ].
20
Ricordando che vT e = 1, abbiamo che

1 (1 − c)vT x2 · · · (1 − c)vT xn
 0
cλ2
···
0

X−1 P(c)X =  ..
..
..
.
..
 .
.
.
0
0
···
cλn



.

(14)
Non rimane adesso che diagonalizzare la matrice precedente: poniamo


Tx
(1−c)vT xn
2
1 (1−c)v
·
·
·
(1−cλ2 )
(1−cλn )


1
···
0

 0
R= .

.
.
.
.
.
.
.
 .

.
.
.
0
0
···
1
e moltiplichiamola a destra per la (14); eseguendo esplicitamente il calcolo si
può verificare che
RX−1 P(c)X = diag(1, cλ2 , . . . , cλn )R,
cioè
X−1 P(c)X = R−1 diag(1, cλ2 , . . . , cλn )R,
da cui si ottiene la tesi.
Osservazione 3.18. È sempre possibile fare in modo che la prima riga di
X−1 sia un PageRank di base: se y1 , . . . , yt (cioè le prime t righe di X−1 )
sono una base dell’autospazio relativo all’autovalore 1 di PT , il generico
PageRank di base y si può scrivere come y = ω1 y1 + · · · + ωt yt . Si ha
1 = yT e = [ω1 y1 e + · · · + ωt yt ]T e = ω1 ,
poiché X−1 X = I; basta allora sostituire y1 con y e cambiare la base di
autovettori di P, passando da xi a x̃i = xi − ωi e, per i = 2, . . . , t.
Osservazione 3.19. Il PageRank di base y1 non dipende dall’ordine dei vettori x2 , . . . , xn ; infatti, se scambiassimo la posizione delle colonne di X, eccetto la prima (che è e), nella matrice inversa la prima riga non cambierebbe.
Ciò si dimostra eseguendo esplicitamente il seguente calcolo:
I = XX−1 = XΠΠT X−1
dove Π è la matrice di permutazione della forma


0 ··· 0
1

 0



 ..
Γ

 .
0
21
corrispondente allo scambio di colonne effettuato (anche Γ è una matrice di
permutazione).
Corollario 3.20. Con le notazioni del teorema 3.17, il vettore PageRank(c)
è dato da
T
T
[P ageRank(c)] = y1 + (1 − c)
n
X
j=2
1
v T xj yj T .
(1 − cλj )
(15)
Dimostrazione. Dal teorema 3.17 si ha che un autovettore sinistro di P(c)
relativo all’autovalore 1 è il trasposto della prima riga della matrice Z−1 =
RX−1 . Per il corollario 2.8, questo vettore ha tutte le componenti concordi
e non nulle. Osservando che la prima riga di Z = XR−1 è e (in quanto
R−1 = I − e1 wT ), da X−1 X = I si ottiene che tale autovettore sinistro è
proprio il PageRank(c), poiché la somma delle sue componenti è 1. Dato
che X−1 = [y1 |y2 | . . . |yn ]T , per provare la tesi basta osservare la struttura di
R.
Passiamo adesso al caso generale, eliminando l’ipotesi di diagonalizzabilità: supponiamo dunque che P abbia almeno due sottoinsiemi chiusi irriducibili (come avviene in realtà) e che P = XJ(1)X−1 , con


1 0
0
···
0
 0 cλ2 c · ∗ · · ·
0 


 ..

.
.
.
.
.
.
J(c) =  .
,
.
.
.
0


 0 0 · · · cλn−1 c · ∗ 
0 0 ···
0
cλn
dove ∗ denota un elemento che può essere 0 o 1 (nella dimostrazione del
teorema 3.10 abbiamo visto che, nel caso c = 1, la molteplicità geometrica
dell’autovalore 1 è almeno 2).
Teorema 3.21. Sia P = XJ(1)X−1 , con X
[y1 |y2 | . . . |yn ], e

1 0
0
···
 0 cλ2 ∗
···

 .. .. . .
...
J(c) = D  . .
.

 0 0 · · · cλn−1
0 0 ···
0
22
T
= [e|x2 | . . . |xn ], [X−1 ]

0
0 

 −1
D ,
0 

∗ 
cλn
=
(16)
con D = diag(1, c, . . . .cn−1 ). Allora
P(c) = ZJ(c)Z−1 ,
Z = XR−1 ,
dove
R = I + e1 wT , wT = (0, w2 , . . . , wn ),
w2 = (1 − c)vT x2 /(1 − cλ2 ),
wj = [(1 − c)vT xj + [J(c)]j−1,j wj−1 ]/(1 − cλj ),
j = 3, . . . , n.
Dimostrazione. Come osservato nella dimostrazione del teorema 3.17, si ha
che X−1 e = e1 . Dalla relazione
P(c) = cP + (1 − c)evT = cXJ(1)X−1 + (1 − c)evT ,
deduciamo che
X−1 P(c)X = cJ(1) + (1 − c)X−1 evT X
= cJ(1) + (1 − c)e1 vT X
= cJ(1) + (1 − c)e1 [vT e, vT x2 , . . . , vT xn ],
e quindi, dato che vT e = 1,

1 (1 − c)vT x2 · · · (1 − c)vT xn−1 (1 − c)vT xn
 0
cλ2
c·∗
···
0

 ..
.
−1
.
.
..
..
..
X P(c)X =  .
0

 0
0
···
cλn−1
c·∗
0
0
···
0
cλn




.


(17)
Poniamo



R=


1 w2 · · · wn
0 1 ··· 0 

.. .. . .
.. 
. . 
. .
0 0 ··· 1
(dove i wj sono gli elementi definiti nell’enunciato); eseguendo esplicitamente
il calcolo, si può vedere che
RX−1 P(c)X = J(c)R,
cioè
X−1 P(c)X = R−1 J(c)R,
da cui si ottiene la tesi.
23
Corollario 3.22. Con le notazioni del teorema 3.21, il vettore PageRank(c)
è dato da
n
X
[P ageRank(c)]T = y1 T +
wj yj T .
(18)
j=2
Dimostrazione. Da (16), risulta che la matrice degli autovettori sinistri è
diag(1, c−1 , . . . , c1−n )Z−1 = diag(1, c−1 , . . . , c1−n )RX−1 .
Con considerazioni analoghe a quelle fatte nella dimostrazione del corollario
3.20, si ottiene che il [P ageRank(c)]T è la prima riga di questa matrice; dato
che
X−1 = [y1 |y2 | . . . yn ]T ,
la tesi è dimostrata osservando che la prima riga di diag(1, c−1 , . . . , c1−n ) è
e1 T e ricordando la struttura di R.
Osservazione 3.23. Come nel caso già analizzato, possiamo supporre che
y1 sia un PageRank di base.
Dai risultati precedenti seguono immediatamente alcune conseguenze:
(a) il vettore PageRank(c) può essere molto diverso dai PageRank di base,
in quanto il numero n che appare in (15) e in (18) è molto grande.
Ciò mostra che piccoli cambiamenti del valore di c possono portare ad
enormi modifiche del vettore;
(b) le formule (15) e (18) suggeriscono l’utitlizzo di nuovi procedimenti per
il calcolo di un “buon” PageRank di base, che utilizzano il PageRank(c)
(come i già citati metodi di estrapolazione).
Vediamo una potenziale strategia per il calcolo di un particolare PageRank(1) = PageRank di base attraverso una tecnica di estrapolazione applicata a (18): esprimeremo il vettore cercato come limite, per c che tende a
1, di PageRank(c) (stiamo facendo il limite di un’espressione razionale senza
poli per c = 1, quindi esiste ed è unico). Questa vettore corrisponde alla soluzione di uno speciale problema del PageRank (si noti che qualche coordinata
del vettore trovato può esser nulla).
Supponiamo che la matrice A = PT sia nella forma canonica (13). Facciamo alcune considerazioni:
• λ = 1 è un’autovalore di A con molteplicità algebrica e geometrica
uguale a m − r (esattamente 1 per ogni Pj,j con j = r + 1, . . . , m),
ed ogni altro autovalore di modulo unitario ha molteplicità geometrica
uguale a quella algebrica (si veda [7]);
24
• tutti i rimanenti autovalori di A hanno modulo strettamente minore di 1, in quanto Pi,i per i = 1, . . . , r è una matrice nulla oppure
substocastica ed irriducibile (proposizione 2.10);
• la base canonica dell’autospazio dominante è data da {Z[i] ≥ 0, i =
1, . . . , t = m − r}, con

 
 

0
0
0
AZ[i] = A  z[i]  =  Pr+i,r+i z[i]  =  z[i]  = Z[i]
0
0
0
P
e nj=1 (Z[i])j = 1, (Z[i])j ≥ 0, per ogni j = 1, . . . , n e per ogni i =
1, . . . , t.
Ciò ci permette di caratterizzare tutti gli autovettori dominanti non
negativi e normalizzati della matrice A come
u(α1 , . . . , αt ) =
t
X
αi Z[i],
i=1
t
X
αi = 1,
αi ≥ 0.
(19)
i=1
Confrontando la relazione precedente con quanto ottenuto nel corollario 3.22
e ricordando la definizione degli elementi wj del teorema 3.21, deduciamo che
l’equazione (18) può essere riscritta come
[P ageRank(c)]T = y1 T + (vT x2 )y2 T + · · · + (vT xt )yt T +
n
X
wj yj T ,
j=t+1
con wj = wj (c) e limc→1 wj (c) = 0. Quindi l’unico vettore [P ageRank(1)]T =
y1 T +(vT x2 )y2 T +· · ·+(vT xt )yt T che calcoliamo è uno dei vettori u(α1 , . . . .αt )
definiti da (19), in quanto le sue componenti sono non negative (perché è limite di vettori positivi) ed hanno somma uguale a 1 (poiché la norma è un’applicazione continua e, come ben sappiamo, kP ageRank(c)k1 = 1, ∀c ∈ (0, 1)).
I coefficienti αi possono essere trovati utilizzando il corollario 3.22: si ha che
t
X
(vT xi )mi,j ,
αj =
i=1
dove x1 = e e M = (mi,j )ti,j=1 è la trasposta della matrice di passaggio
dalla P
base {Z[i] ≥ 0, i = 1, . . . , t = m − r} alla base {yi , i = 1, . . . , t}, cioè
yi = tj=1 mi,j Z[j].
È interessante osservare che il vettore calcolato in questo modo dipende,
come dovevamo aspettarci, dal vettore di personalizzazione v.
25
4
Esperimenti Numerici
Proviamo adesso ad effettuare qualche esperimento, utilizzando come software M atLab r .
Per prima cosa, utilizziamo la funzione surfer.m (scaricabile dal sito
http://www.mathworks.com/moler/ncmfilelist.html), che ci permette di
scaricare una porzione della rete, immettendo una pagina da cui partire ed
il numero di nodi da considerare. Eseguiamo quindi
>> [U,G] = surfer (’http://www.unipi.it’,250);
per ottenere il vettore U, che contiene gli indirizzi dei siti visitati, e la matrice
sparsa G, il cui generico elemento gij vale 1 se U(j) “punta” verso U(i), 0 altrimenti. Al termine dell’esecuzione del comando, otteniamo che la struttura
di G è la seguente:
0
50
Figura 1: Spy plot della matrice sparsa G.
100
Osservazione 4.1. Nella figura precedente si possono notare zone in cui
i punti sono molto addensati, quasi al punto da formare un quadrato: ciò
indica la presenza di sottoinsiemi chiusi.
150
26
200
250
0
50
100
150
200
250
Con questi risultati è immediato creare le matrici di cui abbiamo bisogno:
>>
>>
>>
>>
M
e
v
P
=
=
=
=
double(full(G)’);
ones(250,1);
1 / 250 * e;
creaP (M);
dove creaP è la seguente funzione:
function P = creaP (M)
link_usc = sum (M,2);
n = length (M);
P = M;
for i = 1:n
if link_usc(i) == 0
P(i,:) = 1 / n;
else
P(i,:) = P(i,:) / link_usc(i);
end
end
Con questi comandi abbiamo ottenuto la matrice P; non ci resta che
calcolare P(c), utilizzando c = 0.85:
>> Pc = 0.85 * P + 0.15 *e * v’;
Per il calcolo del PageRank(c), dobbiamo applicare il metodo delle potenze; per far ciò, possiamo utilizzare la seguente funzione:
function[eigenvect,eigenvalue,it] = powermethod (A,t_0)
it = 0;
err = 1;
gamma = 1;
t_prec = t_0;
tau_prec = 1;
while err >= 1.0e-16
it = it + 1;
u_att = A * t_prec;
tau_att = sum(abs(u_att));
gamma = gamma * tau_att;
t_att = 1 / tau_att * u_att;
err = abs((tau_att - tau_prec)) / tau_att;
t_prec = t_att;
27
tau_prec = tau_att;
end
u_att = A * t_prec;
[massimo,j] = max(abs(t_prec));
eigenvalue = u_att(j) / t_prec(j);
alpha_1x_1 = gamma / eigenvalue * u_att;
norma = sum(alpha_1x_1);
eigenvect = 1/norma * alpha_1x_1;
Sicuri della convergenza del metodo, scegliamo inizialmente un’importanza uniforme – cioè usiamo v come vettore iniziale – e diamo il seguente
comando
>> [pagerank,lambda,it] = powermethod (Pc’,v);
che ci restituisce il PageRank(c), l’autovalore dominante ed il numero di
iterazioni effettuate; nel nostro caso otteniamo che con 135 iterazioni, il metodo si arresta, approssimando l’autovalore 1 con un errore inferiore a 10−16 ,
e producendo il seguente PageRank(c):
0.06
0.05
0.04
0.03
Figura 2: PageRank(c) della porzione di rete scaricata.
Ordinando il vettore calcolato possiamo ottenere il seguente plot, da cui
si nota che le pagine con un discreto rank sono circa un quinto del totale.
0.02
28
0.01
0
0
50
100
150
200
250
0.06
0.05
0.04
0.03
Figura 3: Coordiante di PageRank(c) in ordine ascendente.
Osservazione 4.2. La funzione powermethod utilizzata non sfrutta la struttura della matrice P(c), che è somma della matrice sparsa P e della diade
e · vT ; tale struttura può essere utilizzata per abbassare il costo computazionale del calcolo del PageRank(c).
0.02
0.01
0
0
Osservazione 4.3. La tolleranza dell’errore utilizzata nella funzione è molto
più piccola di quella che normalmente viene usata (che non scende sotto
50
100
150
200
250
l’ordine di 10−7 ).
Possiamo verificare che il vettore calcolato con powermethod è effettivamente un’approssimazione di un autovettore di [P(c)]T : con il seguente
comando
>> max(abs(pagerank - Pc’ * pagerank))
otteniamo che il massimo dei moduli delle componenti di P ageRank(c) −
[P(c)]T ∗ P ageRank(c) è dell’ordine di 10−14 .
Se invece si sceglie come vettore iniziale il vettore z, che ha come coordinate 0.16667 nelle posizioni 1, 50, 100, 150, 200 e 250, e 0 altrove, il metodo
converge in 17 iterazioni. La convergenza con un numero cosı̀ basso di iterazioni è spiegabile calcolando la componente di z lungo il secondo autovettore
29
di [P(c)]T : si ottiene che questa è, in modulo, vicina a 3, mentre la norma
infinito del vettore delle componenti è 3.5429 · 1015 (raggiunta in corrispondenza di un autovettore relativo ad un autovalore di modulo 7.4203 · 10−6 ).
Quindi z ha solo una piccola componente nell’autospazio dove la convergenza
è più lenta.
Per curiosità, se si utilizza il vettore P ageRank(c)−[P(c)]T ∗P ageRank(c)
come vettore di partenza (anche se non rappresenta un’importanza iniziale),
si ottengono dei risultati analoghi, facendo però salire il numero di iterazioni
a 177.
Nelle tre prove fatte, il plot dei vettori ottenuti non evidenzia particolari
variazioni.
Proviamo adesso a simulare un aggiornamento nella rete che stiamo analizzando supponendo, per semplicità, che i nodi restino inalterati e modificando solo P(c). Più precisamente, consideriamo la seguente matrice
>> newPc = 0.80 * P + 0.10 * e * (v’+w’);
dove w è il vettore ottenuto con il seguente ciclo:
>> for i = 1:250
if mod(i,2) == 0
w(i) = v(i) + 0.002;
else
w(i) = v(i) - 0.002;
end
end
Si tratta ora di aggiornare il PageRank(c); proviamo quindi a fare alcune prove con powermethod, utilizzando come vettori iniziali v, z e PageRank(c). I tre esperimenti danno risultati molto simili, anche se, contrariamente a quanto potevamo aspettarci, il terzo caso è quello che impiega più
tempo a convergere, necessitando di 36 iterazioni (gli altri hanno bisogno,
rispettivamente, di 11 e 8 iterazioni).
I cambiamenti occorsi al PageRank sono, al massimo, dell’ordine di 10−2
e l’ordine di importanza delle pagine resta pressoché invariato.
Osservazione 4.4. In generale, i ricercatori hanno mostrato che il calcolo
del nuovo PageRank(c) mediante un metodo iterativo non trae vantaggio dall’utilizzo del vecchio PageRank(c) come vettore iniziale in quanto, in media,
non si abbassa il numero di iterazioni necessarie. Anche il problema dell’aggiornamento del PageRank(c) è al centro di numerose ricerche (si veda, ad
esempio [6]).
Nella figura seguente sono riportati i due vettori ottenuti prima e dopo
l’aggiornamento:
30
0.06
Old PageRank
New PageRank
0.05
0.04
Figura 4: Confronto tra PageRank iniziale e PageRank aggiornato.
0.03
0.02
0.01
0
0
Come ultimo esperimento, ripartiamo dalla matrice P(c) e proviamo
a modificare c, analizzando i casi in cui si scelgano i valori 0.50 e 0.98,
utilizzando v come vettore iniziale.
Nel primo caso, il metodo converge con 29 iterazioni e la norma ∞ della
differenza tra il vettore ottenuto ed il PageRank(c) già calcolato è di 0.0296.
L’ordinamento dei nodi subisce qualche modifica; ad esempio, la seconda e
la terza pagina (in ordine di importanza) vengono invertite.
Per c = 0.98 la situazione è molto diversa: le iterazioni necessarie sono
103 e la norma della differenza tra i due vettori è 0.11865. L’importanza
50
100
150
250
delle
pagine è variata
molto e solo
uno dei nodi 200
che in precedenza
aveva un
alto rank è rimasto rilevante.
Vediamo i PageRank(c) ottenuti per i diversi valori di c analizzati:
31
0.18
c=0.85
c=0.50
c=0.98
0.16
0.14
0.12
0.1
Figura 5: PageRank ottenuti variando c.
0.08
Quest’ultimo esperimento conferma quello che avevamo già detto precedentemente: il PageRank(c) calcolato per c = 0.85 può essere molto diverso
dal PageRank che risulterebbe considerando solo la struttura dei collegamenti
del web.
0.06
0.04
0.02
0
0
50
100
150
200
32
250
Riferimenti bibliografici
[1] D. Bini, M. Capovani, O. Menchi. Metodi numerici per l’algebra lineare.
Zanichelli, 1996.
[2] C. Brezinski, M. Redivo Zaglia, S. Serra-Capizzano. Extrapolation methods for PageRank computations. Les Comptes Rendus de l’Academie
de Sciences de Paris Ser. 1,340 (2005), pp. 393-397.
[3] H. Haveliwala, S. D. Kamvar. The Second Eigenvalue of the Google
Matrix. Technical report, Stanford University, CA, 2003.
[4] R. A. Horn, S. Serra-Capizzano. Canonical and standard forms for certain rank one perturbations and an application to the (complex) Google
pageranking problem. Internet Mathematics, to appear.
[5] A. N. Langville, C. D. Meyer. A Survey of Eigenvector Methods for Web
Information Retrieval. SIAM Rev. 47 (2005), pp. 135-161.
[6] A. N. Langville, C. D. Meyer. Deeper Inside PageRank. Internet
Mathematics, Vol. 1, No. 3. (2003), pp. 335-380.
[7] C. D. Meyer. Matrix Analysis and Applied Linear Algebra. SIAM, 2000.
[8] L. Page, S. Brin. http://www.google.com/technology/
[9] L. Page, S. Brin. The anatomy of a large-scale hypertextual web search
engine. Proccedings of the Seventh International Web Conference (WWW
98), 1998.
[10] L. Page, S. Brin, R. Motwani, T. Winograd. The PageRank Citation
Ranking: Bringing Order to the Web. Stanford Digital Libraries Working
Paper, 1998.
[11] The MathWorks, Inc. Numerical
http://www.mathworks.com/moler.
computing
with
MATLAB.
[12] S. Serra-Capizzano. Jordan canonical form of the Google matrix: a potential contribution to the PageRank computation. SIAM J. Matrix Anal.,
27 (2005), pp. 305-312.
33