PageRank算法

1. PageRank算法概述

         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这个站点是很受欢迎的,也可以说这个站点很重要。算法

 

2. 从入链数量到 PageRank

        在PageRank提出以前,已经有研究者提出利用网页的入链数量来进行连接分析计算,这样的入链方法若是一个网页的入链越多,则该网页越重要。早期的很是多搜索引擎也採纳了入链数量做为连接分析方法,对于搜索引擎效果提高也有较明显的效果。 PageRank除了考虑到入链数量的影响,还參考了网页质量因素,二者相结合得到了更好的网页重要性评价标准。
对于某个互联网网页A来讲,该网页PageRank的计算基于下面两个基本若是:
     数量若是:在Web图模型中,若是一个页面节点接收到的其它网页指向的入链数量越多,那么这个页面越重要。
     质量若是指向页面A的入链质量不一样,质量高的页面会经过连接向其它页面传递不少其它的权重。因此越是质量高的页面指向页面A,则页面A越重要。
       利用以上两个若是,PageRank算法刚開始赋予每个网页一样的重要性得分,经过迭代递归计算来更新每个页面节点的PageRank得分,直到得分稳定为止。 PageRank计算得出的结果是网页的重要性评价,这和用户输入的查询是没有不论什么关系的,即算法是主题无关的。若是有一个搜索引擎,其类似度计算函数不考虑内容类似因素,全然採用PageRank来进行排序,那么这个搜索引擎的表现是什么样子的呢?这个搜索引擎对于随意不一样的查询请求,返回的结果都是一样的,即返回PageRank值最高的页面。
数据结构

 

3. 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. PageRank幂法计算(线性代数应用)

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:

       

                                    网页间的连接关系

      显然这个图是强连通的(从任一节点出发都可以到达另外不论什么一个节点)。

      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所看到的:

     

           
         图2  网页连接矩阵:                                      图3  网页连接几率矩阵:  
 
 

                         图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两人利用稀疏矩阵计算的技巧,大大的简化了计算量。

 

5. PageRank算法优缺点

长处

        是一个与查询无关的静态算法,所有网页的PageRank值经过离线计算得到;有效下降在线查询时的计算量,极大下降了查询响应时间。

缺点:

       1)人们的查询具备主题特征,PageRank忽略了主题相关性,致使结果的相关性和主题性减小

        2)旧的页面等级会比新页面高。因为即便是很是好的新页面也不会有很是多上游连接,除非它是某个网站的子网站。

 

 

 參考文献:

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

PageRank算法的分析及实现

《这就是搜索引擎:核心技术具体解释》

相关文章
相关标签/搜索