GOOGLEOV PAGERANK
ALGORITAM
Seminar
Autori: Marin Tomić, Davor Šibenik, Paolo Rakocija, Kristina Maceković
1
KAZALO
1. Uvod
2. Općenito o PageRank Metodi
2.1 Objašnjenje PageRank metode
2.2 Matrični model
2.3 Slučajni šetač
2.3.1 „Zaglavljen“ u stranici
2.3.2 „Zaglavljen“ u podgrafu
2.4 Odabir α
2.5 Računanje PageRank-a
3. Računanje svojstvenih vrijednosti i vektora
3.1 Metoda potencija
3.1.1 Korištenje metode potencija za PageRank
3.2 Arnoldijeva metoda
3.2.1 Kriterij zaustavljanja
3.2.2 Korištenje Arnoldijeve metode za PageRank
3.2.3 Eksplicitni „restart“
3.3 Točnost svojstvenog vektora
4. Formati rijetkih matrica
4.1 CRS – Compress Row Storage
4.2 MATLAB internal sparse format
5. Testni podaci
5.1 Stanford Web matrica
5.2 Random matrica
5.3 Matrica citiranih članaka
6. Rezultati
6.1 Broj potrebnih iteracija
6.2 Variranje α
6.3 Važnost parametra m
7. Zaključak
8. Literatura
2
1 UVOD
Internetske tražilice (pretraživači) su jako bitan faktor u modernom svijetu, oni su spona između
ljudi i informacija. Zbog opsežnosti i točnosti rezultata pretraživanja, posljednjih godina tron
najuspješnijeg pretraživača je zauzeo Google. Još u svojem začeću, najvažniji algoritam koji
Google koristi je PageRank, a svoju važnost je zadržao i do danas.
Metoda koju Google koristi za izračun PageRank algoritma je metoda potencija. Za veće
domene ili Internet u cjelini, to je možda i jedina smislena metoda, sve ostale metode imaju
prevelike memorijske zahtjeve. Metoda potencija obavlja samo 50-100 matričnih množenja.
Za manje domene se otvara mogućnost korištenja drugih metoda. Dobra alternativa metodi
potencija bi bila Arnoldijeva metoda. Ona ima veće memorijske zahtjeve, ali konvergira nakon
manje iteracija.
Važno je napomenuti da se metoda potencija u praksi paralelno implementira. To će osigurati
brže računanje i bolju performansu. U ovom seminaru nećemo obraditi paralelnu
implementaciju.
U nastavku ćemo proći kroz glavne metode pretraživanja te testirati metode na prikupljenim
podacima.
2 OPĆENITO O PAGERANK METODI
U ovom poglavlju ćemo detaljnije opisati ideje PageRank metode, probleme kod računanja iste
te rješenja tih problema.
2.1 Objašnjenje PageRank metode
Internet možemo interpretirati kao veliki graf (skup čvorova i linija koje ih povezuju), gdje
čvorovi predstavljaju web-stranice, a linije linkove (poveznice) između njih. Linije su
usmjerene, razlikujemo stranicu koja pokazuje i stranicu na koju se pokazuje. Naravno, linije
mogu biti i obosmjerne. Ovaj način gledanja na Internet uvelike pomaže kod kreiranja i
razumijevanja raznih načina za rangiranje web-stranica.
PageRank algoritam je integralni dio Google web-pretraživača. On govori koliko je pojedina
stranica ''važna'', tj. koliko će biti blizu vrhu u rezultatima pretraživanja.
Algoritam se zasniva na osnovnoj ideji da je stranica važna ako postoje poveznice na nju sa
drugih važnih stranica. To možemo shvatiti kao glasovanje, svaka pojedina poveznica je jedan
glas za važnost neke stranice. Razlog iza poveznice nam nije važan. Dakle, rezultate PageRank
algoritma možemo shvatiti kao rezultate izbora.
3
No, algoritam radi razliku između pojedinih glasova, nije svaki glas jednak. Glas stranice manje
važnosti (one koja ima manje poveznica koje vode na nju) ima manju vrijednost nego glas
stranice velike važnost (sa puno poveznica prema njoj). PageRank također smanjuje vrijednost
glasa pojedine stranice ovisno o tome na koliko različitih stranica pokazuje. Ako stranica
pokazuje na 100 drugih stranica, onda vrijednost glasa za svaku od tih stranica dijelimo sa 100.
Za n stranica Pi, i=1,2,…,n odgovarajući PageRank iznosi ri, i=1,2,…,n. Matematička formula
za rekurzivno definirani PageRank izražena je u jednakosti (1):
𝑟𝑖 = ∑𝑟𝑗
𝑁𝑗j∈Li
, 𝑖 = 1,2, … 𝑛. (1)
gdje je ri PageRank stranice Pi, Nj broj outlinkova iz stranice Pj i Li stranice koje linkaju na
stranicu Pi.Budući da je algoritam rekurzivne prirode, implementacija je iterativna i zahtjeva
nekoliko iteracija prije stabilizacije ili prihvatljivog rješenja. Gornja jednadžba se može riješiti
sljedećim algoritmom:
Algoritam 2.1 PageRank
1: 𝑟𝑖(0)
, 𝑖 = 1,2, … , 𝑛. proizvoljan početni ne-nul vektor
2:for k = 0, 1, … do
3: 𝑟𝑖(𝑘+1)
= ∑𝑟𝑗
(𝑘)
𝑁𝑗j∈Li , i=1,2,…,n.
4: if ||r(k+1)-r(k)|| < tolerance
5: break
6: end if
7:end for
Počinjemo sa ne-nul vektorom r(npr. vektor jedinica podijeljen sa brojem stranica). Vrijednost
vektora 𝑟𝑖predstavlja početni rang svake stranice 𝑃𝑖. Nakon toga iteriramo gornju formulu sve
dok rezultati zadnje dvije iteracije nisu dovoljno slični.
2.2 Matrični model
Uz pomoć sljedeće definicije matrice Q, PageRank problem možemo promatrati kao matrični
problem:
𝑄𝑖𝑗 ∶= {
1
𝑁𝑖, 𝑎𝑘𝑜 𝑝𝑖 𝑙𝑖𝑛𝑘𝑎 𝑝𝑗
0, 𝑖𝑛𝑎č𝑒
Usmjereni graf na Slici 1 pokazuje izolirani primjer sa šest stranica, 𝑃1 , 𝑃2, … , 𝑃6.
4
Slika 1: Mala izolirana web stranica sa 6 stranica
Matrični zapis tog primjera zapisujemo kao:
Gdje jedinica na mjestu 𝑄𝑖𝑗označuje postojanje poveznice na stranici 𝑃𝑖 prema stranici 𝑃𝑗 te ju
dijelimo sa 𝑁𝑖, tj. brojem postojećih poveznica na stranici𝑃𝑖.
Tada k-tu iteraciju PageRank-a možemo zapisati kao:
𝑟(𝑘+1)𝑇 = 𝑟(𝑘)
𝑇 𝑄 𝑘 = 0,1, …
Iz gornjeg izraza dolazi naziv metoda potencija.
5
2.3 Slučajni šetač
PageRank algoritam se može bolje približiti usporedbom sa slučajnim šetačem. Šetač počinje
na nasumično odabranoj stranici te odabire jednu od stranica na koju početna stranica pokazuje
(linka). Sada možemo rezultat PageRank metode promatrati kao asimptotsku vjerojatnost da je
šetač na određenoj stranici. To je moguće iz razloga što je veća vjerojatnost da će se šetač naći
na stranici na koju puno drugih stranica pokazuje.
2.3.1 “Zaglavljen“ u stranici
Problem kod usporedbe sa šetačem je što postoje stranice bez izlaza, tj. one koje ne pokazuju
ni na koju drugu stranicu. U našem primjeru sa šest stranica će se to dogoditi ako šetač zaluta
na stranicu 𝑃1.
PageRank metoda taj problem rješava tako što zamijeni sve nule u matrici Q sa brojem 1/n,
gdje je n dimenzija matrice.
U matričnom zapisu:
�̂� = 𝑄 +1
𝑁𝑑𝑒𝑇
gdje je e jedinični vektor-stupac, a d vektor-stupac koji opisuje koji retci u matrici Q se sastoje
samo od nula. Vektor d definiramo kao:
𝑑𝑖 = {1 𝑎𝑘𝑜 𝑁𝑖 = 00 𝑖𝑛𝑎č𝑒
𝑖 = 1,2, … , 𝑛.
Izračunajmo �̂�za naš primjer:
Matrica �̂�je redak-stohastička, tj. suma svakog retka joj je 1.
6
2.3.2 “Zaglavljen“ u podgrafu
Drugi problem kod usporedbe sa šetačem je mogućnost postojanja izoliranih podgrafova, tj.
skupa stranica koje ne pokazuju ni na koju drugu stranicu. U tom slučaju će šetač biti zarobljen
u malom odjeljku weba. U našem primjeru će doći do te situacije ako se šetač nađe u donjem
dijelu grafa. Nakon što dođe u donju polovicu, ne postoji poveznica preko koje se može vratiti
u gornji dio. To nam govori da je matrica problema reducibilna.
Ako se šetač nađe u izoliranom podgrafu, vjerojatnost da se nalazi u jednom od čvorova tog
podgrafa se povećava svakom iteracijom. Zato želimo da je matrica ireducibilna.
PageRank rješava problem reducibilnosti tako da omogući skok iz bilo koje stranice na bilo
koju drugu. Vjerojatnost tog skoka je mala, ali različita od nule. To zapisujemo na idući način:
�̂̂� = 𝛼�̂� + (1 − 𝛼)1
𝑛𝑒𝑒𝑇
gdje je e jedinični vektor-stupac, a α faktor prigušenja, tj. faktor vjerojatnosti skoka. U našem
primjeru ćemo α postaviti na 0.85 – toliko on iznosi i u Googleovom pretraživaču.
Sada računamo �̂̂�za naš primjer:
U našem računu smo dodali svakoj stranici jednaku vjerojatnost skoka. Možemo i umjesto
𝑒𝑇koristiti vektor težina koji će označavati različite vjerojatnosti skoka na određene stranice te
tako prilagoditi rješenje vlastitim potrebama.
7
2.4 Odabir α
Propozicija:
Ako matrica �̂�𝑇ima svojstvene vrijednosti {1, 𝜆2, 𝜆3, ...}, onda matrica �̂̂�𝑇ima svojstvene
vrijednosti {1, 𝛼𝜆2, 𝛼𝜆3, ...}.
Prethodna propozicija nam govori da odabir 𝛼 uvelike utječe na dobivene rezultate. Može se
pokazati da metoda potencija aproksimativno konvergira brzinom C ∗ |𝜆2
𝜆1|
𝑚
.
Odabirom faktora α smanjili smo svojstvene vrijednosti matrice. To znači da će za mali α doći
do brže konvergencije. No to također znači da će konačni rezultat algoritma davati
nevjerodostojne rezultate, tj. loše će reprezentirati stvarnost jer dozvoljavamo da nasumični
skokovi (kojih inače nema) jako utječu na rezultat. Za veliki α (~0.9) će metoda potencija
sporije konvergirati, no rezultat će biti točniji. Dobar odabir (koji koristi i Google) za α je 0.85.
2.5 Računanje PageRank-a
Može se pokazati da za matricu koja je redak-stohastička i ireducibilna (kakav je naš �̂̂�) vrijedi
da joj je najveća svojstvena vrijednost 1 i da joj je odgovarajući svojstveni vektor nenegativan.
Iz tog razloga množimo s lijeva. Formula sada glasi:
�̂̂�𝑇𝑟 = 𝑟
Vidimo da je gornji problem zapravo problem pronalaska svojstvenog vektora te se naš problem
nalaženja ranga stranica zapravo ekvivalentan problemu pronalaska svojstvenog vektora koji
odgovara svojstvenoj vrijednosti 1.
U praksi, matrice koje se koriste u PageRank algoritmu su jako velike, ali može se pokazati da
umjesto pune matrice �̂̂�možemo koristiti jako rijetku matricu Q iz iduće jednakosti (9):
𝑟 = �̂̂�𝑇𝑟 = 𝛼�̂�𝑇𝑟 + (1 − 𝛼)1
𝑛𝑒𝑒𝑇𝑟 = 𝛼𝑄𝑇𝑟 + 𝛼
1
𝑛𝑒𝑑𝑇𝑟 + (1 − 𝛼)
1
𝑛𝑒𝑒𝑇𝑟 (9)
To će uvelike smanjiti količinu memorije potrebnu za računanje PageRank-a.
8
3 RAČUNANJE SVOJSTVENIH VRIJEDNOSTI I VEKTORA
U prethodnim poglavljima pokazali smo da se PageRank neke stranice računa se kao svojstveni
vektor najveće svojstvene vrijednosti matrice �̂̂�𝑇. Stoga za izračun trebamo neku iterativnu
metodu koja se dobro ponaša za velike rijetke matrice.
Iako je metoda potencija relativno stara i ponekad nekorisna metoda, Google je koristi za
izračun zbog toga što ne zahtijeva cijelu nemodificiranu matricu, već samo jedan vektor. Dakle,
prednost metode potencija je to što koristi malo memorije. S druge strane, postoje i druge
metode koje su bolje u slučajevima kada se pretražuje samo dio interneta (npr. struktura stranica
sveučilišta ili neke države). Sa takvim manjim matricama možemo koristiti više memorije za
račun. Za ovakve slučajeve dobar odabir je Arnoldijeva metoda.
3.1 Metoda potencija
Metoda potencija je jednostavna metoda za računanje najveće svojstvene vrijednosti matrice i
pripadajućeg svojstvenog vektora. Može se koristiti kada postoji dominantna svojstvena
vrijednost matrice A, tj. svojstvene vrijednosti se mogu poredati na slijedeći način:𝜆1 > 𝜆2 ≥
𝜆3 ≥ ⋯ ≥ 𝜆𝑛. Osnovni algoritamski zapis metode potencija je:
Algoritam 3.1:Normalizirana metoda potencija
1:𝒙0 = 𝑝𝑟𝑜𝑖𝑧𝑣𝑜𝑙𝑗𝑎𝑛 𝑝𝑜č𝑒𝑡𝑛𝑖 𝑣𝑒𝑘𝑡𝑜𝑟 𝑟𝑎𝑧𝑙𝑖č𝑖𝑡 𝑜𝑑 𝑛𝑢𝑙 − 𝑣𝑒𝑘𝑡𝑜𝑟𝑎
2:for k = 1, 2, … do
3: 𝒚𝑘 = 𝑨𝒙𝑘−1
4: 𝒙𝑘 = 𝒚𝑘
‖𝒚𝑘‖1
5:end for
Važno je napomenuti da ovaj algoritam ne radi ako je početni vektor okomit na pravi svojstveni
vektor.
Može se pokazati da je brzina konvergencije metode potencija linearna, tj. da je jednaka
|𝜆1 − 𝜆1(𝑚)
| ≈ 𝐶 |𝜆2
𝜆1|
(𝑚)
, gdje je C neka pozitivna konstanta. Ovaj rezultat je važan za računanje
PageRank-a zbog toga što možemo utjecati na veličinu 𝜆2 mijenjanjem 𝛼, a time i na brzinu.
U sljedećem teoremu dokazujemo da su dovoljni uvjeti za konvergenciju metode potencija to
da je matricu moguće dijagonalizirati, te da ima dominantnu svojstvenu vrijednost. Iz njega pak
izvodimo zaključak o brzini konvergencije metode.
9
Teorem 1: Dovoljni uvjet(i) za konvergenciju metode potencija
Ako je 𝐴 𝑛 × 𝑛 matrica sa dominantnom svojstvenom vrijednosti koja se može dijagonalizirati,
tada postoji vektor 𝑥0 različit od nul-vektora takav da se niz vektora dan sa
𝐴𝑥0, 𝐴2𝑥0, 𝐴3𝑥0, … , 𝐴𝑘𝑥0, …
približava dominantnom svojstvenom vektoru matrice 𝐴.
Dokaz.
Budući da se A može dijagonalizirati, znamo da ima n linearno nezavisnih svojstvenih vektora
𝑥1, … , 𝑥𝑛, te pripadnih svojstvenih vrijednosti 𝜆1, … , 𝜆𝑛. BSOMP da je 𝜆1 dominantna sv.
vrijed. (i 𝑥1 njezin sv. vektor). Budući da su sv. vektori lin. nezavisni, oni moraju činiti bazu za
ℝ𝑛. Za početnu aproksimaciju 𝑥0 odaberemo vektor različit od nul-vektora takav da linearna
kombinacija 𝑥0 = 𝑐1𝑥1 + ⋯ + 𝑐𝑛𝑥𝑛 ima vodeće koeficijente različite od nule. (Ako je 𝑐1 = 0,
metoda ne mora konvergirati, te se treba odabrati druga početna aproksimacija.)
Sada pomnožimo obje strane jednadžbe sa A:
𝐴𝑥0 = 𝐴(𝑐1𝑥1 + ⋯ + 𝑐𝑛𝑥𝑛)
= 𝑐1(𝐴𝑥1) + ⋯ + 𝑐𝑛(𝐴𝑥𝑛)
= 𝑐1(𝜆1𝑥1) + ⋯ + 𝑐𝑛(𝜆𝑛𝑥𝑛)
Nastavimo li sa množenjem matricom A, dobivamo:
𝐴𝑘𝑥0 = 𝑐1(𝜆1𝑘𝑥1) + ⋯ + 𝑐𝑛(𝜆𝑛
𝑘𝑥𝑛)
= 𝜆1𝑘 [𝑐1𝑥1 + 𝑐2 (
𝜆2
𝜆1)
𝑘
𝑥2 + ⋯ + 𝑐𝑛 (𝜆𝑛
𝜆1)
𝑘
𝑥𝑛]
Iz pretpostavke da je 𝜆1apsolutno najveća vrijednost, slijedi da su sve vrijednosti:
𝜆2
𝜆1, … ,
𝜆𝑛
𝜆1
po aps. vrijednosti manje od 1. Iz toga pak slijedi da njihove k-te potencije teže u 0 kako k teži
u beskonačnost. Ovo implicira da se aproksimacija 𝐴𝑘𝑥0 ≈ 𝜆1𝑘𝑐1𝑥1, 𝑐1 ≠ 0 poboljšava sa
𝑘 → ∞. Budući da je 𝑥1 dominantan sv. vektor, slijedi da su svi 𝛼𝑥1 dominantni sv. vektori,
gdje je 𝛼 neki skalar. Dakle, dobili smo da se aproksimacija približava dominantnom sv.
vektoru matrice A.∎
10
Dokaz teorema nam daje uvid u brzinu konvergencije metode. Naime, jer se svojstvene
vrijednosti mogu poredati silazno po apsolutnoj vrijednosti pri čemu je prva strogo veća od
ostalih, vrijedi da će metoda brzo konvergirati ako je |𝜆2
𝜆1| malen, a sporo ako je blizu 1.
3.1.1 Korištenje metode potencija u PageRank-u
Matrice koje se koriste u računanju PageRank-a najčešće su veoma velike (sjetimo se da svaki
red predstavlja jednu web-stranicu, a svako mjesto neki link). Malo je metoda koje mogu
relativno brzo i točno provesti kalkulacije na ovako velikim skupovima podataka. Google
koristi upravo metodu potencija zbog sljedećih dobrih svojstava:
Možemo spremati samo prethodnu aproksimaciju
Pronalazi najveću sv. vrijednost i pripadni sv. vektor, a to je upravo ono što tražimo
Ne mijenja polaznu matricu
Algoritam 3.1 možemo skratiti, tj. pojednostaviti: jer je ‖𝑥‖1 = 𝑒𝑇𝑥 = 1, slijedi ‖𝑦‖1 = 𝑒𝑇𝑦 =
𝑒𝑇𝐴𝑥 = 𝑒𝑇𝑥 = 1 (jer je A stohastička po stupcima: 𝑒𝑇𝐴 = 𝑒𝑇). Stoga možemo izbaciti
normalizaciju iz algoritma.
Korištenjem metode potencija za računanje PageRank-a može se pokazati da je dovoljno
izračunati:
𝒓 = 𝛼𝑄𝑇𝒓 +1
𝑛𝑒 −
1
𝑛‖𝛼𝑄𝑇𝒓‖1
umjesto računa kao u (9). Dakle, ne moramo znati d, tj. ne moramo znati koje stranice nemaju
outlinkove.
3.2 Arnoldijeva metoda
Arnoldijeva metoda pronalazi sve sv. vrijednosti i vektore koristeći Krylovljev potprostor
(definira se kao K(A, q, j) = span(q, Aq, A2q, . . . Aj-1q)). Inicijalno je korištena za računanje
gornjih Hessenbergovih formi (matrica ima nule ispod prve poddijagonale), ali je kasnije
otkriveno da je dobra iterativna metoda za pronalazak sv. vrijednosti i vektora velikih i rijetkih
matrica. Metoda počinje odabirom broja baza m za Krylovljev potprostor te pronalaskom istih.
Nakon toga, možemo izračunati aproksimacije sv. vrijednosti i vektora originalne matrice A.
11
Algoritam 3.2: Arnoldijeva metoda
1: 𝒗0 = 𝑝𝑟𝑜𝑖𝑧𝑣𝑜𝑙𝑗𝑎𝑛 𝑝𝑜č𝑒𝑡𝑛𝑖 𝑣𝑒𝑘𝑡𝑜𝑟 𝑟𝑎𝑧𝑙𝑖č𝑖𝑡 𝑜𝑑 𝑛𝑢𝑙 − 𝑣𝑒𝑘𝑡𝑜𝑟𝑎
2: 𝒗1 = 𝒗0
‖𝒗0‖2
3: for j = 1, 2, … do
4: 𝑤 = 𝑨𝑣𝑗
5: for 𝑖 = 1: 𝑗 do
6: ℎ𝑖𝑗 = 𝑤*𝑣𝑖
7: 𝑤 = 𝑤 − ℎ𝑖𝑗𝑣𝑖
8: end for
9: ℎ𝑗+1,𝑗 = ‖𝑤‖2
10: if ℎ𝑗+1,𝑗 = 0 then
11: stop
12: end if
13: 𝑣𝑗+1 =𝑤
ℎ𝑗+1,𝑗
14: end for
𝑚 × 𝑚 matrica H je ključna u računu – njezine sv. vrijednosti 𝜆𝑖(𝑚)
(zvane Ritzove vrijednosti)
konvergiraju prema sv. vrijednostima matrice A za što veći broj baza 𝑚. Zatim se sv. vektori
matrice A računaju na sljedeći način:
Uzmemo određenu sv. vrijednost matrice H
Odredimo sv. vektor matrice H vezan uz tu sv. vrijednost
Odgovarajući sv. vektor matrice A je tada dan sa:
𝑢𝑖(𝑚)
= 𝑉𝑚𝑦𝑖(𝑚)
(10)
gdje je 𝑢𝑖(𝑚)
pripadni sv. vektor od A, 𝑉𝑚 je vektor sa bazama Krylovljevog potprostora
i 𝑦𝑖(𝑚)
je sv. vektor matrice H vezana uz odgovarajuću sv. vrijednost.
3.2.1 Kriterij zaustavljanja
Kriterij zaustavljanja iteracija je rezidualna norma PageRank vektora. Kada rezidualna norma
između dviju iteracija postane manja od neke tolerancije, prekida se iteriranje. U Arnoldijevoj
metodi možemo umjesto direktnog računanja reziduala iskoristiti bržu i memorijski lakšu
metodu za računanje kriterija zaustavljanja. Kriterij možemo dobiti računanjem rezidualne
norme Ritzovog para(𝑦𝑖(𝑚)
, 𝜆𝑖(𝑚)
):
‖(𝐴 − 𝜆𝑖(𝑚)
𝐼)𝑢𝑖(𝑚)
‖2
= ℎ𝑚+1,𝑚|𝑒𝑚∗ 𝑦𝑖
(𝑚)| (11)
Ova brza metoda je jedna od prednosti Arnoldijeve metode.
12
3.2.2 Korištenje Arnoldijeve metode za PageRank
Iterativni algoritam za specifičnu svojstvenu vrijednost i vektor:
Inicijalno:
Stvorimo početnu bazu, obično uniformnu
For 𝑚 = 1, 2, … do
Dodamo bazu u naš potprostor
Izračunamo svojstvenu vrijednost i vektor matrice H koje nas zanimaju
If ℎ𝑚+1,𝑚|𝑒𝑚∗ 𝑦𝑖
(𝑚)| < 𝑡𝑜𝑙 Break
Konačno:
Pronađemo pripadni sv. vektor matrice A kao u (10)
3.2.3 Eksplicitni “restart“
Kako se broj iteracija povećava, količina posla za Arnoldijevu metodu se sve više povećava:
kao i u metodi potencija, množe se matrica i vektor, a dodatni posao je ortogonaliziranje nove
baze u odnosu na sve prijašnje. Također se poslije svake iteracije treba izračunati Ritzov par
(svojstvene vrijednosti i vektori Hessenbergove matrice). Sav ovaj posao se s iteriranjem sve
više povećava zbog dodavanja vektora u bazu, te povećanje dimenzije Hessenberg matrice.
Ideja eksplicitnog “restarta” je: odredimo 𝑚 koraka u algoritmu 3.2, izračunamo aproksimativni
sv. vektor 𝑢𝑖(𝑚)
(tj. PageRank vektor), završimo ako je rezultat dovoljno dobar, inače
“restartamo” algoritam 3.2 sa početnim vektorom 𝑣0 = 𝑢𝑖(𝑚)
.
3.3 Točnost svojstvenog vektora
Krajnji svojstveni vektor koji opisuje važnost svakog link-a u strukturi je vjerojatnosni vektor:
svi elementi su između 0 i 1, te je suma svih elemenata jednaka 1. To znači da će za velike
strukture elementi vektora biti veoma maleni. Zbog toga želimo što točniju reprezentaciju
brojeva kako bismo mogli što točnije procijeniti relativnu važnost stranica. Pokazano je da je
minimalna točnost veličine 10−9, a najveća potrebna je veličine 10−12(jer stranice koje
pripadaju istom upitu obično nemaju slične PageRank vrijednosti).
13
4 FORMATI RIJETKIH MATRICA
Kako dimenzija matrice s linkovima postaje sve veća, njezina «rijetkost» postaje također sve
veća. Za velike matrice nemoguće je raditi račune u njihovom punom obliku; potrebno je
koristiti neke posebne formate matrica.
4.1 CRS – Compress Row Storage
Matrica se sprema kao niz redova. CRS je jedna od najšire korištenih metoda za pohranu rijetkih
matrica sa minimalnim memorijskim zahtjevima. U CRS-u se lako implemetiraju i osnovne
operacije sa matricama, npr. množenje matrica i vektora (SpMxV). Problem kod SpMxV je loša
pozicija podataka za vektor kojim se množi matrica jer nasumično prelazimo na elemente u
vektoru.
indeks 1 2 3 4 5 6 7 8 9 10
Row_ptr 1 1 3 6 8 10 11
Col_ptr 1 3 1 2 4 5 6 4 5 4
val 1/2 1/2 1/3 1/3 1/3 1/2 1/2 1/2 1/2 1
Tablica 1. CRS shema za matricu Q (3)
Algoritam za SpMxV:
Algoritam 4.1:SpMxV
1: for i=0:dim do
2: for j=row_ptr[i]:row_ptr[i+1] do
3: sol[i] = sol[i]+val[j]*v[col_ind[j]]
4: end for
5: end for
Množenje transponirane CRS matrice bilo bi jednako lagano implementirati, uz malu izmjenu
u redu 3). Kao što je prethodno navedeno, problem kod ove sheme je loša pozicija podataka:
indeksi iz col_ptr će nasumično skakati u vektoru v, te će zbog toga postojati cache promašaji
u gotovo svakoj iteraciji.
4.2 MATLAB internal sparse format
MATLAB koristi vlastitu shemu za pohranu rijetkih matrica. Za svaku vrijednost različitu od
0, MATLAB pohranjuje trojku (x, y, val) da opiše poziciju i vrijednost elementa.
Shema je prikazana u Tablici 2.
14
indeks 1 2 3 4 5 6 7 8 9 10
(x, y) (1,2) (3,2) (1,3) (2,3) (4,3) (5,4) (6,4) (4,5) (5,5) (4,6)
val 1/2 1/2 1/3 1/3 1/3 1/2 1/2 1/2 1/2 1
Tablica 2. MATLAB shema za matricu Q (3)
5 TESTNI PODACI
Koristili smo tri matrice, različite po veličini i strukturi. Jedna je generirana u Octave -u, jedna
je identična kao u izvornom radu, a treća skinuta s interneta.
5.1 Stanford Web matrica
Ova matrica je sa stranice Stanford Sveučilišta. Opisuje stanford.edu domenu iz 2002. godine.
Sadrži 281903 stranica s otprilike 2.2 milijuna linkova. Pohranjena u MATLAB sparse formatu zauzima
64.2 MB. Uzorak “rijetkosti” gornjeg lijevog dijela Stanford matrice je prikazan u slici 5.1.
Slika 5.1 – Stanford matrica
15
5.2 Random matrica
Sljedećim kodom generirali smo random matricu dimenzije 10000×10000.
Algoritam 5.1: Generiranje matrica
1. 1: function [A] = random_matrix(dim)
2. 2: A = sparse(dim, dim);
3. 3: maxnel = min(16, dim);
4. 4: for i = 1:dim
5. 5: nel = ceil(rand(1)*maxnel);
6. 6: for j = 1:nel
7. 7: id = ceil(rand(1)*dim);
8. 8: while A(i, id) ~= 0
9. 9: id = ceil(rand(1)*dim);
10. 10: end
11. 11: A(i, id) = 1;
12. 12: end
13. 13: end
14. 14: end
Slika 5.2 Random generirana matrica
16
5.3 Matrica citiranih članaka
Matrica je preuzeta sa stranice http://snap.stanford.edu/data/cit-HepPh.html Dimenzija matrice:
34546×34546. Ako rad i citira rad j, matrica na mjestu (i,j) sadrži 1. Podaci u matrici sežu od
1993. do 2003. godine.
Slika 5.3 Matrica citiranih članaka
17
6 REZULTATI
Za numeričke eksperimente i provjeru implementirali smo algoritme u Octave-u. Kodove smo
stavili u dodatak. Nismo koristili paralelizaciju.
6.1 Broj potrebnih iteracija
Broj iteracija potrebnih za različite metode je dosta varirao. Naši rezultati pokazuju da je
metoda potencija potrebno više iteracija (u usporedbi s Arnoldijevom metodom) za
konvergenciju. Rezultati su ovisili o strukturi matrice. Najvažniji čimbenici za usporedbu
metoda je vrijeme potrebno za izračunati PageRank, budući da se iteracije razlikuju među
algoritmima. Slika 6.1. pokazuje rezultate za tri testne matrice.
Uočili smo da za eksplicitno “restartanu“ Arnoldijevu metodu treba malo više iteracija nego za
normalnu verziju. Može se jasno vidjeti gdje se metoda “restarta“. I metoda potencija i
Arnoldijeva metoda konvergiraju linearno za slučajno odabranu matricu u 6.1c)
6.2 Variranje α
Ovdje testiramo utjecaj variranja α.
Za svaku od matrica izračunali smo “točan“ PageRank koristeći α=0.99 i tol=1e-8. Izračunati
PageRank za različite α smo usporedili s onim “pravim“. Također smo napravili graf koji
pokazuje broj potrebnih iteracija u ovisnosti o α. Pokazujemo rezultate za matricu citiranih
članaka.
18
U 6.2a) vidimo da se “točnost“ povećava linearno do α=0.85, nakon čega rast postaje
eksponencijalan.
6.2b) pokazuje da se naše dvije Arnoldijeve metode bolje ponašaju za veće α nego metoda
potencija. Možemo to vidjeti prilikom bržeg povećanja broja iteracija metode potencija nego
kod Arnoldijeve metode. 6.2b) nam također pokazuje da je razlika u broju iteracija između
Arnoldijeve metode i “restartane“ Arnoldijeve metode zanemariva. Zaključak je da bi
eksplicitno “restartana“ metoda trebala imati bolje performanse za veće α od ostale dvije
metode.
Slika 6.3 pokazuje rezultate uspoređivanja metoda i korištenja različitih vrijednosti α.
19
Graf pokazuje da je „restartana“ Arnoldijeva metoda zaista bolja od druge dvije metode.
6.3 Važnost parametra m u eksplicitno “restartanoj“ Arnoldijevoj metodi
Variranjem parametra m (maksimalni broj baza) možemo promijeniti broj potrebnih iteracija,
a time i vrijeme izvršavanja metode. Slika 6.4 pokazuje važnost odabira dobrog m.
Graf 6.4a) pokazuje da povećanjem m smanjujemo broj iteracija potrebnih za konvergenciju.
Stoga se s većim m povećava količina posla opisana u poglavlju 3.2.2.
Graf 6.4b) pokazuje da je za Stanford matricu i α=0.85, m izmedju 20 i 30 najbolji izbor.
Veličina najboljeg m ovisi o strukturi matrice i o vrijednosti izabranog α.
20
7 ZAKLJUČAK
METODA
POTENCIJA
ARNOLDIJEVA
METODA
EKSPLICITNO
“RESTARTANA“
ARNOLDIJEVA
METODA
ZA Dobro radi za
α<0.9
Svaka iteracija
jednako traje
Bolje koristiti
za manje α
Brža i
zauzima
manje
memorije
Bolje koristiti
za veće α
PROTIV Potrebno puno
iteracija
za α>0.85
eksponencijalni
rast
Rastuća
količina
posla i
potrebne
memorije za
svaku
iteraciju
Nemoguće
pronaći
optimalni m
za svaku
matricu
21
8 LITERATURA
[1] Erik Andersson, Per-Anders Ekstrom, Investigating Google's PageRank algorithm, 2004.
[2] Ron Larson, Elementary linear algebra, 7th edition, 2013. Dostupno na:
http://college.cengage.com/mathematics/larson/elementary_linear/5e/students/ch08-
10/chap_10_3.pdf
[3] Matrica citiranja preuzeta sa: http://snap.stanford.edu/data/cit-HepPh.html
[4] Stanford matrica preuzeta sa:
http://www.cise.ufl.edu/research/sparse/matrices/SNAP/web-Stanford.html