PageRank,即網頁排名,又稱網頁級別、Google左側排名或佩奇排名。php
是Google創始人拉里·佩奇和謝爾蓋·布林於1997年構建早期的搜索系統原型時提出的連接分析算法,自從Google在商業上得到空前的成功後,該算法也成爲其餘搜索引擎和學術界十分關注的計算模型。眼下許多重要的連接分析算法都是在PageRank算法基礎上衍生出來的。PageRank是Google用於用來標識網頁的等級/重要性的一種方法,是Google用來衡量一個站點的好壞的惟一標準。在揉合了諸如Title標識和Keywords標識等所有其餘因素以後,Google經過PageRank來調整結果,使那些更具「等級/重要性」的網頁在搜索結果中另站點排名得到提高,從而提升搜索結果的相關性和質量。其級別從0到10級,10級爲滿分。PR值越高說明該網頁越受歡迎(越重要)。好比:一個PR值爲1的站點代表這個站點不太具備流行度,而PR值爲7到10則代表這個站點很受歡迎(或者說極其重要)。通常PR值達到4,就算是一個不錯的站點了。Google把本身的站點的PR值定到10,這說明Google這個站點是很受歡迎的,也可以說這個站點很重要。算法
在PageRank提出以前,已經有研究者提出利用網頁的入鏈數量來進行連接分析計算,這樣的入鏈方法若是一個網頁的入鏈越多,則該網頁越重要。早期的很是多搜索引擎也採納了入鏈數量做爲連接分析方法,對於搜索引擎效果提高也有較明顯的效果。 PageRank除了考慮到入鏈數量的影響,還參考了網頁質量因素,二者相結合得到了更好的網頁重要性評價標準。
對於某個互聯網網頁A來講,該網頁PageRank的計算基於下面兩個基本若是:
數量若是:在Web圖模型中,若是一個頁面節點接收到的其它網頁指向的入鏈數量越多,那麼這個頁面越重要。
質量若是:指向頁面A的入鏈質量不一樣,質量高的頁面會經過連接向其它頁面傳遞不少其它的權重。因此越是質量高的頁面指向頁面A,則頁面A越重要。
利用以上兩個若是,PageRank算法剛開始賦予每個網頁一樣的重要性得分,經過迭代遞歸計算來更新每個頁面節點的PageRank得分,直到得分穩定爲止。 PageRank計算得出的結果是網頁的重要性評價,這和用戶輸入的查詢是沒有不論什麼關係的,即算法是主題無關的。若是有一個搜索引擎,其類似度計算函數不考慮內容類似因素,全然採用PageRank來進行排序,那麼這個搜索引擎的表現是什麼樣子的呢?這個搜索引擎對於隨意不一樣的查詢請求,返回的結果都是一樣的,即返回PageRank值最高的頁面。數據結構
PageRank的計算充分利用了兩個若是:數量若是和質量若是。過程例如如下:
1)在初始階段:網頁經過連接關係構建起Web圖,每個頁面設置一樣的PageRank值,經過若干輪的計算,會獲得每個頁面所得到的終於PageRank值。隨着每一輪的計算進行,網頁當前的PageRank值會不斷獲得更新。ide
2)在一輪中更新頁面PageRank得分的計算方法:在一輪更新頁面PageRank得分的計算中,每個頁面將其當前的PageRank值平均分配到本頁面包括的出鏈上,這樣每個連接即得到了對應的權值。而每個頁面將所有指向本頁面的入鏈所傳入的權值求和,就能夠獲得新的PageRank得分。當每個頁面都得到了更新後的PageRank值,就完畢了一輪PageRank計算。 函數
3.2 基本思想:網站
假設網頁T存在一個指向網頁A的鏈接,則代表T的所有者以爲A比較重要,從而把T的一部分重要性得分賦予A。這個重要性得分值爲:PR(T)/L(T)搜索引擎
當中PR(T)爲T的PageRank值,L(T)爲T的出鏈數google
則A的PageRank值爲一系列相似於T的頁面重要性得分值的累加。atom
即一個頁面的得票數由所有鏈向它的頁面的重要性來決定,到一個頁面的超連接至關於對該頁投一票。一個頁面的PageRank是由所有鏈向它的頁面(鏈入頁面)的重要性通過遞歸算法獲得的。一個有較多鏈入的頁面會有較高的等級,相反假設一個頁面沒有不論什麼鏈入頁面,那麼它沒有等級。spa
3.3 PageRank簡單計算:
若是一個由僅僅有4個頁面組成的集合:A,B,C和D。若是所有頁面都鏈向A,那麼A的PR(PageRank)值將是B,C及D的和。
繼續若是B也有連接到C,並且D也有連接到包含A的3個頁面。一個頁面不能投票2次。因此B給每個頁面半票。以相同的邏輯,D投出的票僅僅有三分之中的一個算到了A的PageRank上。
換句話說,依據鏈出總數平分一個頁面的PR值。
樣例:
如圖1 所看到的的樣例來講明PageRank的詳細計算過程。
3.4 修正PageRank計算公式:
由於存在一些出鏈爲0,也就是那些不連接不論什麼其它網頁的網, 也稱爲孤立網頁,使得很是多網頁能被訪問到。所以需要對 PageRank公式進行修正,即在簡單公式的基礎上添加了阻尼係數(damping factor)q, q通常取值q=0.85。
其意義是,在隨意時刻,用戶到達某頁面後並繼續向後瀏覽的機率。 1- q= 0.15就是用戶中止點擊,隨機跳到新URL的機率)的算法被用到了所有頁面上,估算頁面可能被上網者放入書籤的機率。
最後,即所有這些被換算爲一個百分比再乘上一個係數q。由於如下的算法,沒有頁面的PageRank會是0。因此,Google經過數學系統給了每個頁面一個最小值。
這個公式就是.S Brin 和 L. Page 在《The Anatomy of a Large- scale Hypertextual Web Search Engine Computer Networks and ISDN Systems 》定義的公式。
因此一個頁面的PageRank是由其它頁面的PageRank計算獲得。Google不斷的反覆計算每個頁面的PageRank。假設給每個頁面一個隨機PageRank值(非0),那麼通過不斷的反覆計算,這些頁面的PR值會趨向於正常和穩定。這就是搜索引擎使用它的緣由。
4.1 完整公式:
關於這節內容,可以查閱:谷歌背後的數學
首先求完整的公式:
Arvind Arasu 在《Junghoo Cho Hector Garcia - Molina, Andreas Paepcke, Sriram Raghavan. Searching the Web》 更加準確的表達爲:
是被研究的頁面,是鏈入頁面的數量,是鏈出頁面的數量,而N是所有頁面的數量。
PageRank值是一個特殊矩陣中的特徵向量。這個特徵向量爲:
R是例如如下等式的一個解:
假設網頁i有指向網頁j的一個連接,則
不然=0。
4.2 使用冪法求PageRank
那咱們PageRank 公式可以轉換爲求解的值,
當中矩陣爲 A = q × P + ( 1 一 q) * /N 。 P 爲機率轉移矩陣,爲 n 維的全 1 行. 則 =
冪法計算步驟例如如下:
X 設隨意一個初始向量, 即設置初始每個網頁的 PageRank值均。通常爲1.
R = AX;
while (1 )(
if ( l X - R I < ) { //假設最後兩次的結果近似或者一樣,返回R
return R;
} else {
X =R;
R = AX;
}
}
4.3 求解步驟:
1、 P機率轉移矩陣的計算過程:
先創建一個網頁間的連接關係的模型,即咱們需要合適的數據結構表示頁面間的鏈接關係。
1) 首先咱們使用圖的形式來表述網頁之間關係:
現在若是僅僅有四張網頁集合:A、B、C,其抽象結構例如如下圖1:
圖1 網頁間的連接關係
顯然這個圖是強連通的(從任一節點出發都可以到達另外不論什麼一個節點)。
2)咱們用矩陣表示連通圖:
用鄰接矩陣 P表示這個圖中頂點關係 ,假設頂(頁面)i向頂點(頁面)j有連接狀況 ,則pij = 1 ,不然pij = 0 。如圖2所看到的。假設網頁文件總數爲N , 那麼這個網頁連接矩陣就是一個N x N 的矩 陣 。
3)網頁連接機率矩陣
而後將每一行除以該行非零數字之和,即(每行非0數之和就是連接網個數)則獲得新矩陣P’,如圖3所看到的。 這個矩陣記錄了 每個網頁跳轉到其它網頁的機率,即當中i行j列的值表示用戶從頁面i 轉到頁面j的機率。圖1 中A頁面鏈向B、C,因此一個用戶從A跳轉到B、C的機率各爲1/2。
4)機率轉移矩陣P
採用P’ 的轉置矩 陣進行計算, 也就是上面提到的機率轉移矩陣P 。 如圖4所看到的:
圖4 P’ 的轉置矩 陣
2、 A矩陣計算過程。
1)P機率轉移矩陣 :
2)/N 爲:
3)A矩陣爲:q × P + ( 1 一 q) * /N = 0.85 × P + 0.15 * /N
初始每個網頁的 PageRank值均爲1 , 即X~t = ( 1 , 1 , 1 ) 。
3、 循環迭代計算PageRank的過程
第一步:
因爲X 與R的區別較大。 繼續迭代。
第二步:
繼續迭代這個過程...
直到最後兩次的結果近似或者一樣,即R終於收斂,R 約等於X,此時計算中止。終於的R 就是各個頁面的 PageRank 值。
用冪法計算PageRank 值老是收斂的,即計算的次數是有限的。
Larry Page和Sergey Brin 兩人從理論上證實了不論初始值怎樣選取,這樣的算法都保證了網頁排名的預計值能收斂到他們的真實值。
由於互聯網上網頁的數量是巨大的,上面提到的二維矩陣從理論上講有網頁數目平方之多個元素。假設咱們假定有十億個網頁,那麼這個矩陣 就有一百億億個元素。這樣大的矩陣相乘,計算量是很大的。Larry Page和Sergey Brin兩人利用稀疏矩陣計算的技巧,大大的簡化了計算量。
長處:
是一個與查詢無關的靜態算法,所有網頁的PageRank值經過離線計算得到;有效下降在線查詢時的計算量,極大下降了查詢響應時間。
缺點:
1)人們的查詢具備主題特徵,PageRank忽略了主題相關性,致使結果的相關性和主題性減小
2)舊的頁面等級會比新頁面高。因爲即便是很是好的新頁面也不會有很是多上游連接,除非它是某個網站的子網站。
參考文獻:
維基百科http://en.wikipedia.org/wiki/Page_rank
PageRank算法的分析及實現
《這就是搜索引擎:核心技術具體解釋》