PageRank介绍

         今天给大家来剖析一下PageRank。什么是PageRank?PageRank是一种网页的排名算法,由Google创始人在1977年提出并应用在Google搜索引擎中,Google搜索引擎在商业上的成功使PageRank算法受到广泛。PageRank算法可以计算出网页的得分,从而为搜索引擎在排序搜索结果页面的时候提供依据。那么这里说的得分,是怎么评判的呢?PageRank算法的核心思想有2点:

        1)一页面有越多的入链,那么这个页面就越重要。入链就是指别的网页中指向该页面的链接,比如A页面中,有一个链接指向B页面,那个A页面中的指向B页面的那个链接就是B页面的一个入链。这个思想背后的含义可以理解为,有很多页面引用我,说明我的质量好,大家都愿意从别的地方来我这。就好像有一个人写了一篇文章,然后别人觉得写得很好,就会在别的地方引用它,是一个道理。

        2)指向一个页面的链接所在的页面质量越高,这个链接的权重就越大。举个例子,比如有一个页面www.xxx.com,这个页面在我的这篇博客网页中被引用,和在百度首页被引用,是有很大差别的,因为我这篇博客的页面,相对于百度首页的页面,质量都不在一个档次,因此要区别对待,给予不同的权重。

       以上两点就是PageRank算法的核心思想,你有可能会问,一开始时,还没用PageRank计算出质量得分,大家都没有分,我怎么知道哪个页面质量高?PageRank算法在开始时假设所有页面的重要性是一样的,然后通过迭代,让重要性通过上述两点思想得以传播,最终收敛得到每个页面最终的稳定的质量得分。

       那么PageRank的计算过程是怎么样的呢?我们来看一个例子,假设现在有三个页面,用graph来表面,每个node是一个页面,node与node之间的edge是directed edge,一个node指向另一个node代表有链接指向那个页面,当然也可以是自己指向自己,就是图中的环。

《PageRank介绍》

            上图中每个node中的字母代表该node的PageRank值,也就是质量得分,边上的权值就是每个node把自己的得分平均分配给它所指向的其它页面,比如对于得分为a的这个页面,它里面有链接指向两个其它页面,于是把自己的得分a平均分配给那两个页面,也就是图中那两边权值为a/2的边。于是每个页面的Rank值(即质量得分)可以计算如下:

《PageRank介绍》

         r表示Rank值,dout(i)表示页面i的出度(也就是它引用了几个页面)。那么就有:

《PageRank介绍》

        这就是一次迭代更新,每个结点把自己的Rank值传播出去,同时接收别的页面传过来的Rank值。经过多次迭代收敛能得到最终的PageRank值。这是三个结点的情况,让我们来推广到n个结点,设页面j有dj个出链,那么,如果页面j有指向页面i的链接,有向边node j –>  node i 的权值就是:

《PageRank介绍》

        否则就是:

《PageRank介绍》

        为了使页面的Rank值在多次迭代后不至于变得很大,把页面的Rank值限定在(0,1)之间并且:

《PageRank介绍》

        这样一来,迭代更新的过程就可以写成这样:

《PageRank介绍》

        经过多次迭代后收敛得到PageRank值。

        继续刚才那个例子:

《PageRank介绍》

        设刚开始始时每个页面的rank值是1/3(要满足所有页面的Rank值加起来为1),则迭代过程如下:

《PageRank介绍》

《PageRank介绍》

         最后收敛到6/15,6/15,3/15。

         那么,会不会有些情况下不收敛呢?来看下面这个情况:

《PageRank介绍》

         这时候迭代的情况就是:

《PageRank介绍》

         这时就不收敛了。再来看一种情况:

《PageRank介绍》

        注意看m那个结点比较特殊,它没有出边,但有入边,用直白的话说就是,它接收别人对它的rank分值贡献,但它自己却不贡献给别人,那么这种情况的迭代结果是怎么样的呢?大家可以猜一下~好,我们来看看结果:

《PageRank介绍》

       最后收敛了,rank分值都被m结点给霸占了,虽然是收敛了,但这个收敛的结果显然不是我们希望的,因为这将导致m结点对应的页面rank值比其它的都高,而且其它的都是0,无法再比较了。那怎么解决呢?就是一个结点在下一次迭代的时候,给予它一定的概率随机跳到其它任意一个结点。这样的话,它就不会一直在m结点转下去了,总有跳出去的时候。

       再看下面这种情况:

《PageRank介绍》

       这种情况的迭代结果是什么呢?大家看看m结点,只进不出。。迭代的结果是:

《PageRank介绍》

       这种情况也可以用上面说的一个结点在下一次迭代的时候,给予它一定的概率随机跳到其它任意一个结点来解决。

       下面给出加入跳转概率后的rank值的迭代式子:

《PageRank介绍》

       这就是基本的PageRank算法,实际上,PageRank算法还有很多变形,甚至是用在其它的地方,而不是用来计算网页的rank,比如可以用来在Social Network中计算结点的影响力。重要的是PageRank算法的思想,搞懂了思想之后,就可以把思想用到其它地方去,而不是生搬硬套地套算法。

点赞