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
Documenti analoghi
Metodi per il calcolo di autovalori e autovettori
Il metodo delle potenze può essere implementato in Matlab utilizzando la function potenze.m il cui
listato, nella sua parte essenziale, è riportato di seguito.
I dati in ingresso x0, tol, nmax rap...