1. 程式人生 > >PageRank演算法簡介

PageRank演算法簡介

PageRank演算法簡介

最早的搜尋引擎採用的是分類目錄的方法,即通過人工進行網頁分類並整理出高質量的網站。當時的 Yahoo 和 hao123 就是使用的這種方法。
後來網頁越來越多,人工分類已經不現實了。搜尋引擎進入了 文字檢索 的時代,即計算使用者查詢關鍵詞與網頁內容的相關程度來返回搜尋結果。這種方法突破了數量的限制,但是搜尋結果不是很好。因為總有某些網頁來回地倒騰某些關鍵詞使自己的搜尋排名靠前。
谷歌的兩位創始人,當時還是美國斯坦福大學 (Stanford University) 研究生的佩奇 (Larry Page) 和布林 (Sergey Brin) 開始了對網頁排序問題的研究。他們的借鑑了學術界評判學術論文重要性的通用方法, 那就是看論文的引用次數。由此想到網頁的重要性也可以根據這種方法來評價。於是PageRank的核心思想就誕生了,非常簡單:

  • 如果一個網頁被很多其他網頁連結到的話說明這個網頁比較重要,也就是PageRank值會相對較高
  • 如果一個PageRank值很高的網頁連結到一個其他的網頁,那麼被連結到的網頁的PageRank值會相應地因此而提高

Simplified algorithm

PageRank演算法總的來說就是預先給每個網頁一個PR值(下面用PR值指代PageRank值),由於PR值物理意義上為一個網頁被訪問概率,所以一般是 1 N

\frac{1}{N} ,其中 N N 為網頁總數。另外,一般情況下,所有網頁的PR值的總和為1。如果不為1,最後算出來的不同網頁之間PR值的大小關係仍然是正確,但是不能直接地反映概率了。預先給定PR值後,不斷迭代下面的等式,直至達到平穩分佈為止:
P
R ( u ) = v B u P R ( v ) L ( v ) PR(u)=\sum_{v\in B_u}\frac{PR(v)}{L(v)}

B u B_u 表示連結到 u u 的網頁的集合, L ( v ) L(v) 表示節點 v v 的連出的邊的數目。

Damping factor

網際網路中一個網頁只有對自己的出鏈,或者幾個網頁的出鍊形成一個迴圈圈。那麼在不斷地迭代過程中,這一個或幾個網頁的PR值將只增不減,顯然不合理。為了解決這個問題,PageRank認為人們以一定概率隨機跳到任意一個網頁,那麼上面的等式就變為:
P R ( u ) = 1 d N + v B u P R ( v ) L ( v ) PR(u)=\frac{1-d}{N}+\sum_{v\in B_u}\frac{PR(v)}{L(v)}

Damping factor一般設為0.85,Bayesian analysis認為最優值為0.31。

Computation

冪迭代法

初始化: P R ( u ; 0 ) = 1 N PR(u;0)=\frac{1}{N}
迭代: P R ( u ; t + 1 ) = 1 d N + v B u P R ( v ; t ) L ( v ) PR(u;t+1)=\frac{1-d}{N}+\sum_{v\in B_u}\frac{PR(v;t)}{L(v)} ,也可以看成是矩陣乘法 R ( t + 1 ) = d M R ( t ) + 1 d N R(t+1)=dMR(t)+\frac{1-d}{N} M = ( K 1 A ) T M=(K^{-1}A)^T A A 是連結矩陣, K K 是出度對角線矩陣。
終止條件: R ( t + 1 ) R ( t ) < ϵ |R(t+1)-R(t)|<\epsilon

特徵值法

因為收斂之後, R M R R\approx MR ,所以 R R 為矩陣 M M 特徵值1對應的特徵向量。

代數法

因為 R = d M R + 1 d N R=dMR+\frac{1-d}{N} ,那麼 R = ( I d M ) 1 1 d N R=(I-dM)^{-1}\frac{1-d}{N}

缺點

PageRank原理簡單但效果驚人。然而,PageRank演算法還是有一些弊端。
第一,沒有區分站內導航連結。很多網站的首頁都有很多對站內其他頁面的連結,稱為站內導航連結。這些連結與不同網站之間的連結相比,肯定是後者更能體現PageRank值的傳遞關係。
第二,沒有過濾廣告連結和功能連結(例如常見的“分享到微博”)。這些連結通常沒有什麼實際價值,前者連結到廣告頁面,後者常常連結到某個社交網站首頁。
第三,對新網頁不友好。一個新網頁的一般入鏈相對較少,即使它的內容的質量很高,要成為一個高PR值的頁面仍需要很長時間的推廣。
針對PageRank演算法的缺點,有人提出了TrustRank演算法。其最初來自於2004年斯坦福大學和雅虎的一項聯合研究,用來檢測垃圾網站。TrustRank演算法的工作原理:先人工去識別高質量的頁面(即“種子”頁面),那麼由“種子”頁面指向的頁面也可能是高質量頁面,即其TR值也高,與“種子”頁面的連結越遠,頁面的TR值越低。“種子”頁面可選出鏈數較多的網頁,也可選PR值較高的網站。
TrustRank演算法給出每個網頁的TR值。將PR值與TR值結合起來,可以更準確地判斷網頁的重要性。

現狀

谷歌用PR值來劃分網頁的等級,有0~10級,一般4級以上的都是比較好的網頁了。谷歌自己PR值為9,百度也是9。
如今PR值雖不如以前重要了(沒有區分頁面內的導航連結、廣告連結和功能連結導致PR值本身能夠反映出的網頁價值不精確,並且對新網頁不友好),但是PR值還是個很重要的參考因素。

參考文獻:
PageRank演算法–從原理到實現
WIki