MapReduce 基础算法【PageRank网页排名算法】

目录

PageRank网页排名算法

PangeRank算法是Google公司创始人之一Larry Page发明的,它是一个用来衡量评估网页重要性或者等级的算法。Google公司据此标识网页的PR值,最直观的条件就是有很多网页链接到它,尤其是要有很高Rank值的网页链接到该网页。
MapReduce 基础算法【PageRank网页排名算法】

基本思想

如果网页T存在一个指向网页A的连接,则表明T的所有者认为A比较重要,从而把T的一部分重要性得分赋给A,这个重要性得分值为:PR(T)/L(T).其中PR(T)T的PangeRank值,L(T)T的输出链数。则A的PangeRank值为一系列类似于T的页面重要性得分值的累加。

即一个页面的得票数由所有链向它的重要性来决定的,到一个页面的超链接相当于对该页面投一票。一个页面的PangeRank是由所有链向它的页面的重要性经过递归算法得到的。一个有较多链入的页面会有较高的等级,相反如果第一个页面没有任何链入页面,那么它没有等级。

简单计算

假设一个由只有4个页面组成的集合:A,B,CD。如果所有页面都链向A,那么A的PR值将是BC,D的和。

PR(A)=PR(B)+PR(C)+PR(D)

继续假设B也有链接到C,并且D也有链接到包括A的3个页面。一个页面不能投票2次。所以B给每个页面半票。同样,D投出的票只有三分之一算到了A的PangeRank上。
PR(A)=PR(B)2+PR(C)1+PR(D)3

换句话说,根据链出的总数平分一个页面的PR值。
PR(A)=PR(B)L(B)+PR(C)L(C)+PR(D)L(D)

PageRank 的简化模型

互联网上的各个网页之间的连接关系我们都可以看成一个有向图,对于任意的网页,它的PR值可以表示为:

PR(u)=vBuPR(v)L(v)

其中,Bu是所有链接到网页u的网页集合,网页v是属于集合Bu的网页,L(v)则是网页v的对外链接数(即出度)。

简化模型的问题

排名泄露

MapReduce 基础算法【PageRank网页排名算法】

如上图所示,如果存在网页没有出度链接,如A点,则会产生排名泄露问题,经过多次迭代之后,所有网页的PR值会趋向于0。其中,有向图可以得出如下的初始的转移矩阵:

M=[000120001201000010]

在这个矩阵中,第一列表示用户网页A跳转到其他页面的概率。即用户分别有B、C、D、都没向A跳转。

注意: 这里所有点的初始PR值都是假设为0.25.

如下表所示(各个点的迭代计算):

\ PR(A) PR(B) PR(C) PR(D)
初始值 0.25 0.25 0.25 0.25
一次迭代 0.125 0.125 0.25 0.25
二次迭代 0.125 0.125 0.125 0.25
三次迭代 0.125 0.125 0.125 0.125
... ... ... ... ...
n次迭代 0 0 0 0

排名下沉

MapReduce 基础算法【PageRank网页排名算法】
若有网页没有入度链接,如节点A,其所产生的贡献会被由B、C、D构成的强连通分量“吞噬”掉,就会产生排名下沉,节点A的PR值会在迭代后趋向于0。

\ PR(A) PR(B) PR(C) PR(D)
初始值 0.25 0.25 0.25 0.25
一次迭代 0 0.375 0.25 0.375
二次迭代 0 0.375 0.375 0.25
三次迭代 0 0.25 0.375 0.375
四次迭代 0 0.375 0.25 0.375
... 0 ... ... ...
n次迭代 0 ... ... ...

PageRank的随机浏览模型

由于存在一些出链为0,也就是那些不连接任何其他网页的网,也称孤立网,使得很多网页能被访问到。因此,对PageRank公式进行修正,即在简单模型的基础上增加了阻尼系数q,q 一般取值q=0.85.其意义是,在任意时刻,用户到达某页面后并继续向后浏览的概率。1q=0.15就是用户停止点击,随机跳到新的URL的概率的算法被用到了所有页面上,估算页面可能被上网者放入书签的概率。

公式如下:

PR(A)=(PR(B)L(B)+PR(C)L(C)+PR(D)L(D)+...)q+(1q)

所以一个页面的PageRank是由其他页面的PageRank计算得到。Google不断的重复计算每个页面的PageRank。如果给每个页面一个随机PageRank值,那么经过不断的重复计算,这些页面的PR值会趋向于正常和稳定。

PageRank幂法计算

完整公式

PageRank(pi)=1qN+qpjPageRank(pj)L(pj)

p1,p2,p3....,pn是被研究的页面,M(pi)pi链入页面的数量,L(pj)pj链出页面的数量,而N是所有页面的数量。
PageRank值是一个特殊矩阵中的特征向量,这个特征向量为:
R=[PageRank(p1)PageRank(p2).....PageRank(pn)]

R的一个解是:
R=[(1q)/N(1q)/N...(1q)/N]+[φ(p1,p1)φ(p1,p2)...φ(p1,pN)φ(p2,p1)......φ(pN,p1)φ(pN,pN)]R

如果网页i有指向网页j的一个链接,则i=1Nφ(pi,pj)=1,否则φ(pi,pj)=0.

求解步骤

P概率转移矩阵的计算过程:

p 概率转移矩阵:
P=[011001100]()P=[01212001100]()PT=[00112001210]P

A矩阵的计算过程:

PageRank公式可以转换为limxAnX的值。
其余矩阵为A=q×P+(1q)eet/N,P为概率转移矩阵,et为n维的全1行(即单位矩阵)。

P概率转移矩阵
P=[00112001210]
ee^t/N为
eet/N=[131313131313131313]

A矩阵为:q×P+(1q)eet/N=0.85×P+0.15eet/N
A=[0.050.050.90.450.050.050.450.90.05]
初始的每个网页的PageRank值均为1,即:
x∼=(1,1,1).

循环迭代计算PageRank的过程

第一步:
AX=[0.050.050.90.450.050.050.450.90.05][111]=[0.05+0.05+0.90.45+0.05+0.050.45+0.9+0.05]=[10.551.4]=R
因为X与R的差别较大,继续迭代。
第二步:
AX=[0.050.050.90.450.050.050.450.90.05][10.551.4]=[1.3370.4551.109]=R

继续迭代这个过程,直到最后两次结果近似或者相同,即R最终收敛。最终的R就是各个页面的PageRank值。用幂法计算PageRank值总是收敛的,即计算过程是有限的。
由于互联网上的网页的数量是巨大的,这样,矩阵的元素会较多,矩阵相乘是非常的大,稀疏矩阵 简化了计算量。

PageRank优缺点

优点:
是一个与查询无关的静态算法,所有网页的PageRank值通过离线计算获得;有效减少在线查询时的计算量,极大降低了查询响应时间。
缺点:
  • 人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主题性降低

  • 旧的页面等级会比新页面高。因为即使是非常好的新页面也不会有很多上游链接,除非它是某个站点的子站点。

参考文献

1、维基百科
2、《深入理解大数据大数据处理与编程实践》
3、《这就是搜索引擎:核心技术详解》