PageRank je algoritmus pro ohodnocení důležitosti webových stránek, navržený Larry Pagem a Sergeyem Brinem, tvořící základ vyhledávače Google. (Název algoritmu je dvojsmyslný, šlo by ho přeložit jako “stránkové hodnocení” nebo “Pageovo hodnocení”. Podle vyjádření společnosti Google byl algoritmus pojmenován právě po Pageovi.[1])
Algoritmus využívá strukturu hypertextových odkazů jako vzájemné “doporučování” stránek, ne nepodobné hodnocení vědeckých prací podle počtu citací. Na rozdíl od sledování počtu citací však dovádí tento princip ještě dál: hodnocení stránky se nepočítá z prostého počtu odkazů, které na ni vedou, ale bere se v úvahu i hodnocení odkazujících stránek, signály ze sociálních sítí apod.
Chceme-li tedy spočítat PageRank R(a) stránky a, můžeme použít vzorec (Markovův řetězec)
kde je množina všech stránek, které odkazují na a, a je počet odkazů, které vedou z u. Každá stránka tak své hodnocení v podstatě předává dál skrze odkazy.
Hodnoty PageRanku se dají spočítat pomocí přiřazení libovolných hodnot a následným iterováním výpočtu, dokud hodnoty nezačnou konvergovat. Iterační výpočet je tedy přímo mocninnou metodou pro výpočet (levého) vlastního vektoru odpovídajícího dominantnímu vlastnímu číslu stochastické matice incidence grafu, který reprezentuje odkazy na webu.
Problémem při výpočtu PageRanku jsou uzavřené struktury stránek, u nichž vedou odkazy dovnitř, ale už ne ven. Například dvě vzájemně propojené strany, s odkazem vedoucím zvenku na jednu z nich, by při výpočtu PageRank akumulovaly, ale nic by nepouštěly ven (protože není kudy). Tím vzniká jakási past, kterou Page a Brin nazývají rank sink. Rank sinky lze vyřešit přidáním zdroje ranku: výchozí hodnoty, kterou má každá stránka sama od sebe. Pak lze upravený PageRank definovat jako zobrazení, které splňuje rovnici
kde je kladná konstanta.
V maticovém zápisu zapíšeme uvedenou rovnici jako , kde A je stochastická incidenční matice, kde na pozici (a,u) je , vede-li odkaz z u do a, v ostatních případech 0, a E je matice ze samých jedniček.
Vektor PageRanků R je tedy (levým) vlastním vektorem matice A, vektor R' matice cA+(1-c)E. Vlastní vektor je normovaný tak aby .
Jak již bylo zmíněno, PageRank lze spočítat postupnou iterací:
Faktor d ovlivňuje rychlost konvergence a zachovává celkovou normu výsledku.
Trochu problematické jsou ve výpočtu tzv. visící stránky (dangling nodes). V praxi se často jedná o stránky, ze kterých už žádný odkaz nevede (obrázky jpg, gif, ..., často také dokumenty doc, pdf, ..., atd). Výše uvedená matice A je právě z důvodů visících stránek trochu poškozena a není stochastická, ale tzv. substochastická. Tento problém se řeší obdobně jako výše zmíněné rank sinky, které, pro změnu, způsobují rozložitelnost matice A. Rozložitelnost i substochasticita negativně ovlivňují proveditelnost výpočtu.
Při výpočtu PageRanku se používá vektor zdroje ranku E. Kromě řešení problému “rank sinks” je to i mocný nástroj k hodnocení stránek z “různých perspektiv” – při použití upraveného vektoru E lze například označit vybranou množinu stránek za důležité pro uživatele, a hodnocení stránek ostatních bude určeno jejich relativním postavením v síti odkazů vůči těmto vybraným stránkám.
Tímto způsobem je teoreticky možné vytvořit vyhledávač přizpůsobený pro konkrétního uživatele – stačí zvolit vektor E, který bude vysoko hodnotit třeba obsah složky jeho složky “oblíbené”. Potom například dotaz “baterie” vrátí elektrotechnikovi stránky o elektrickém článku, zatímco fanouškovi vojenství informace o dělostřelbě.
Vzhledem k výpočetní náročnosti přepočítávání PageRanku pro každého uživatele zvlášť se tento postup ovšem nepoužívá.