PageRank算法

1. PageRank算法概述

         PageRank,即網頁排名,又稱網頁級別Google左側排名佩奇排名。

        是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這個網站是非常受歡迎的,也可以說這個網站非常重要。

2. 從入鏈數量到 PageRank

        在PageRank提出之前,已經有研究者提出利用網頁的入鏈數量來進行鏈接分析計算,這種入鏈方法假設一個網頁的入鏈越多,則該網頁越重要。早期的很多搜索引擎也采納了入鏈數量作為鏈接分析方法,對于搜索引擎效果提升也有較明顯的效果。 PageRank除了考慮到入鏈數量的影響,還參考了網頁質量因素,兩者相結合獲得了更好的網頁重要性評價標準。
對于某個互聯網網頁A來說,該網頁PageRank的計算基于以下兩個基本假設: 
?     數量假設:在Web圖模型中,如果一個頁面節點接收到的其他網頁指向的入鏈數量越多,那么這個頁面越重要。
?     質量假設:指向頁面A的入鏈質量不同,質量高的頁面會通過鏈接向其他頁面傳遞更多的權重。所以越是質量高的頁面指向頁面A,則頁面A越重要。
       利用以上兩個假設,PageRank算法剛開始賦予每個網頁相同的重要性得分,通過迭代遞歸計算來更新每個頁面節點的PageRank得分,直到得分穩定為止。 PageRank計算得出的結果是網頁的重要性評價,這和用戶輸入的查詢是沒有任何關系的,即算法是主題無關的。假設有一個搜索引擎,其相似度計算函數不考慮內容相似因素,完全采用PageRank來進行排序,那么這個搜索引擎的表現是什么樣子的呢?這個搜索引擎對于任意不同的查詢請求,返回的結果都是相同的,即返回PageRank值最高的頁面。

3. PageRank算法原理

      PageRank的計算充分利用了兩個假設:數量假設和質量假設。步驟如下:
      1)在初始階段:網頁通過鏈接關系構建起Web圖,每個頁面設置相同的PageRank值,通過若干輪的計算,會得到每個頁面所獲得的最終PageRank值。隨著每一輪的計算進行,網頁當前的PageRank值會不斷得到更新。

      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的出鏈數

        則A的PageRank值為一系列類似于T的頁面重要性得分值的累加。

        即一個頁面的得票數由所有鏈向它的頁面的重要性來決定,到一個頁面的超鏈接相當于對該頁投一票。一個頁面的PageRank是由所有鏈向它的頁面(鏈入頁面)的重要性經過遞歸算法得到的。一個有較多鏈入的頁面會有較高的等級,相反如果一個頁面沒有任何鏈入頁面,那么它沒有等級。

3.3 PageRank簡單計算:

       假設一個由只有4個頁面組成的集合:A,B,C和D。如果所有頁面都鏈向A,那么A的PR(PageRank)值將是B,C及D的和。

       1.png

       繼續假設B也有鏈接到C,并且D也有鏈接到包括A的3個頁面。一個頁面不能投票2次。所以B給每個頁面半票。以同樣的邏輯,D投出的票只有三分之一算到了A的PageRank上。

       2.png

      換句話說,根據鏈出總數平分一個頁面的PR值。

       3.png

例子:

        如圖1 所示的例子來說明PageRank的具體計算過程。  

       4.jpg                    

3.4  修正PageRank計算公式:

         由于存在一些出鏈為0,也就是那些不鏈接任何其他網頁的網, 也稱為孤立網頁,使得很多網頁能被訪問到。因此需要對 PageRank公式進行修正,即在簡單公式的基礎上增加了阻尼系數(damping factor)q, q一般取值q=0.85。

      其意義是,在任意時刻,用戶到達某頁面后并繼續向后瀏覽的概率。 1- q= 0.15就是用戶停止點擊,隨機跳到新URL的概率)的算法被用到了所有頁面上,估算頁面可能被上網者放入書簽的概率。

      最后,即所有這些被換算為一個百分比再乘上一個系數q。由于下面的算法,沒有頁面的PageRank會是0。所以,Google通過數學系統給了每個頁面一個最小值。

      5.png

     這個公式就是.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. PageRank冪法計算(線性代數應用)

4.1 完整公式:

關于這節內容,可以查閱:谷歌背后的數學

首先求完整的公式:

Arvind Arasu 在《Junghoo Cho Hector Garcia – Molina, Andreas Paepcke, Sriram Raghavan. Searching the Web》 更加準確的表達為:

 6.png

PageRank算法是被研究的頁面,PageRank算法PageRank算法鏈入頁面的數量,PageRank算法PageRank算法鏈出頁面的數量,而N是所有頁面的數量。

PageRank值是一個特殊矩陣中的特征向量。這個特征向量為:

7.png

R是如下等式的一個解:

8.png

如果網頁i有指向網頁j的一個鏈接,則

9.png

否則1.png=0。

4.2 使用冪法求PageRank

      那我們PageRank 公式可以轉換為求解PageRank算法的值,

      其中矩陣為 A = q  × P + ( 1 一 q) * PageRank算法 /N 。 P 為概率轉移矩陣,PageRank算法為 n  維的全 1 行. 則 PageRank算法=

      10.jpg

     冪法計算過程如下:
      X  設任意一個初始向量, 即設置初始每個網頁的 PageRank值均。一般為1.

     R = AX;

     while  (1 )(

            if ( l X – R I  <  PageRank算法) { //如果最后兩次的結果近似或者相同,返回R

                  return R;

           }    else   {

                X =R;

               R = AX;

         }

    }

4.3 求解步驟:

一、 P概率轉移矩陣的計算過程:

        先建立一個網頁間的鏈接關系的模型,即我們需要合適的數據結構表示頁面間的連接關系。

      1) 首先我們使用圖的形式來表述網頁之間關系:

       現在假設只有四張網頁集合:A、B、C,其抽象結構如下圖1:

        11.jpg

                                     圖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所示:

     

     12.jpg      1.jpg              2.jpg

         圖2  網頁鏈接矩陣:                                      圖3  網頁鏈接概率矩陣:  

 

3.jpg 4.jpg

                         圖4  P’ 的轉置矩 陣

 

二、 A矩陣計算過程。

      1)P概率轉移矩陣  :

       14.jpg

      2)PageRank算法/N 為:

     15.jpg

      3)A矩陣為:q  × P + ( 1 一 q) * PageRank算法 /N = 0.85  × P + 0.15  *PageRank算法 /N

     16.jpg

      初始每個網頁的 PageRank值均為1 , 即X~t = ( 1 , 1 , 1 ) 。 

三、 循環迭代計算PageRank的過程

       第一步:

       17.jpg

          因為X 與R的差別較大。 繼續迭代。

          第二步:

           18.jpg

       繼續迭代這個過程…

      直到最后兩次的結果近似或者相同,即R最終收斂,R 約等于X,此時計算停止。最終的R 就是各個頁面的 PageRank 值。

用冪法計算PageRank 值總是收斂的,即計算的次數是有限的。

      Larry Page和Sergey Brin 兩人從理論上證明了不論初始值如何選取,這種算法都保證了網頁排名的估計值能收斂到他們的真實值。

      由于互聯網上網頁的數量是巨大的,上面提到的二維矩陣從理論上講有網頁數目平方之多個元素。如果我們假定有十億個網頁,那么這個矩陣 就有一百億億個元素。這樣大的矩陣相乘,計算量是非常大的。Larry Page和Sergey Brin兩人利用稀疏矩陣計算的技巧,大大的簡化了計算量。

5. PageRank算法優缺點

優點:

        是一個與查詢無關的靜態算法,所有網頁的PageRank值通過離線計算獲得;有效減少在線查詢時的計算量,極大降低了查詢響應時間。

缺點:

       1)人們的查詢具有主題特征,PageRank忽略了主題相關性,導致結果的相關性和主題性降低

        2)舊的頁面等級會比新頁面高。因為即使是非常好的新頁面也不會有很多上游鏈接,除非它是某個站點的子站點。

 參考文獻:

維基百科http://en.wikipedia.org/wiki/Page_rank

PageRank算法的分析及實現

《這就是搜索引擎:核心技術詳解》

轉自:http://blog.csdn.net/hguisu/article/details/7996185

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/2726

(0)
s19930811s19930811
上一篇 2015-12-15
下一篇 2015-12-16

相關推薦

  • Linux 入門基礎 及一些常見命令(上)

    計算機的組成及其各部分的功能 現代計算機的基本結構是由匈牙利-美國科學家馮· 諾依曼于1946年提出的。迄今為止所有進入實用的電子計算機  都是按馮· 諾依曼提出的結構體系和工作原理設計制造的,故又統稱為“馮·諾依曼型計算機". 根據馮.諾依曼原理:計算機由運算器、控制器、存儲器、輸入設備、輸出設備所組成. 運算器: 進行算術與邏輯運算.…

    Linux干貨 2016-09-17
  • 文件系統層次標準FHS

    FHS針對目錄樹架構僅定義出三層目錄下應該放置哪些數據,分別是下面三個目錄: /(根目錄):與開機系統有關; /usr(unix software resource):與軟件安裝執行有關; /var(variable):與系統運作過程有關。   下面分別對上述三層目錄進行詳細的闡述。   (1) /(根目錄)   根目錄是整個系統最重要的一個目錄,…

    Linux干貨 2016-10-19
  • LVS的工作原理

    LB Load Balancing:解決方案 硬件: F5 BIG-IP 思杰 Citrix Netscaler A10 A10 Array  Redware 軟件:lvs  linux Virtual Server 作者章文嵩博士 ipvs相當于netfilter,工作在內核中,將用戶轉發    框架,需要依賴以規則…

    Linux干貨 2016-12-07
  • gawk基礎

    gawk程序是Unix中原始awk程序的GNU版本。gawk程序讓流編輯器邁上了一個新的臺階,它提供了一種編程語言而不只是編輯器命令。在gawk編程語言中,可以完成下面的事情: (1)定義變量來保存數據; (2)使用算數和字符串操作符來處理數據; (3)使用結構化編程概念(比如if-then語句和循環)來為數據處理增加處理邏輯; (4)通過提取數據文件中的數…

    Linux干貨 2017-05-22
  • 第五周作業

    1、顯示當前系統上root、fedora或user1用戶的默認shell; [root@localhost ~]# egrep '^(fedora|root|user1):' /etc/passwd |cut -d: -f1,7 root:/bin/bash user1…

    Linux干貨 2017-02-04
  • 系統基礎之Btrfs文件系統詳解

    btrfs文件系統:技術預覽版(centos7) 描述: Btrfs(B-tree,Butter FS,Better fs),GPL授權,Orale,2007 寫實復制特性(Cow)     cp –reflink (只能在btrfs文件系統中使用) 想取代ext系統系統, 支…

    Linux干貨 2016-09-21
欧美性久久久久